TPTP Problem File: ITP047^2.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : ITP047^2 : TPTP v8.2.0. Released v7.5.0.
% Domain   : Interactive Theorem Proving
% Problem  : Sledgehammer Determinacy problem prob_914__3357784_1
% Version  : Especial.
% English  :

% Refs     : [BH+15] Blanchette et al. (2015), Mining the Archive of Formal
%          : [Des21] Desharnais (2021), Email to Geoff Sutcliffe
% Source   : [Des21]
% Names    : Determinacy/prob_914__3357784_1 [Des21]

% Status   : Theorem
% Rating   : 0.33 v8.1.0, 0.25 v7.5.0
% Syntax   : Number of formulae    :  339 (  92 unt;  71 typ;   0 def)
%            Number of atoms       :  913 ( 385 equ;   0 cnn)
%            Maximal formula atoms :   13 (   3 avg)
%            Number of connectives : 21296 ( 134   ~;  50   |;  77   &;20602   @)
%                                         (   0 <=>; 433  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   44 (  13 avg)
%            Number of types       :    5 (   4 usr)
%            Number of type conns  : 2396 (2396   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :   70 (  67 usr;   7 con; 0-7 aty)
%            Number of variables   : 1833 (  67   ^;1576   !;  74   ?;1833   :)
%                                         ( 116  !>;   0  ?*;   0  @-;   0  @+)
% SPC      : TH1_THM_EQU_NAR

% Comments : This file was generated by Sledgehammer 2021-02-23 16:19:52.176
%------------------------------------------------------------------------------
% Could-be-implicit typings (11)
thf(ty_t_Product__Type_Oprod,type,
    product_prod: $tType > $tType > $tType ).

thf(ty_t_Sum__Type_Osum,type,
    sum_sum: $tType > $tType > $tType ).

thf(ty_t_Option_Ooption,type,
    option: $tType > $tType ).

thf(ty_t_Data_Oconst,type,
    const: $tType ).

thf(ty_t_Data_Ocntxt,type,
    cntxt: $tType > $tType > $tType > $tType ).

thf(ty_t_Data_Oexpr,type,
    expr: $tType > $tType > $tType > $tType ).

thf(ty_t_Data_Oval,type,
    val: $tType > $tType > $tType > $tType ).

thf(ty_t_Set_Oset,type,
    set: $tType > $tType ).

thf(ty_tf_v,type,
    v: $tType ).

thf(ty_tf_r,type,
    r: $tType ).

thf(ty_tf_l,type,
    l: $tType ).

% Explicit typings (60)
thf(sy_cl_HOL_Otype,type,
    type: 
      !>[A: $tType] : $o ).

thf(sy_cl_Orderings_Oorder,type,
    order: 
      !>[A: $tType] : $o ).

thf(sy_cl_Finite__Set_Ofinite,type,
    finite_finite: 
      !>[A: $tType] : $o ).

thf(sy_cl_Nat_Osemiring__char__0,type,
    semiring_char_0: 
      !>[A: $tType] : $o ).

thf(sy_c_Data_OLID__expression,type,
    lID_expression: 
      !>[L: $tType,R: $tType,V: $tType] : ( ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > ( expr @ R @ L @ V ) ) ).

thf(sy_c_Data_OLID__local__store,type,
    lID_local_store: 
      !>[L: $tType,R: $tType,V: $tType] : ( ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > L > ( option @ ( val @ R @ L @ V ) ) ) ).

thf(sy_c_Data_OLID__snapshot,type,
    lID_snapshot: 
      !>[L: $tType,R: $tType,V: $tType] : ( ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > L > ( option @ ( val @ R @ L @ V ) ) ) ).

thf(sy_c_Data_Ocombine,type,
    combine: 
      !>[A: $tType,B: $tType] : ( ( A > ( option @ B ) ) > ( A > ( option @ B ) ) > A > ( option @ B ) ) ).

thf(sy_c_Data_Oconst_OUnit,type,
    unit: const ).

thf(sy_c_Data_Oexpr_ORef,type,
    ref: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).

thf(sy_c_Data_Oexpr_ORfork,type,
    rfork: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).

thf(sy_c_Data_Oexpr_ORjoin,type,
    rjoin: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).

thf(sy_c_Data_Oexpr_OVE,type,
    ve: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( val @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).

thf(sy_c_Data_Oplug,type,
    plug: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( cntxt @ R @ L @ V ) > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).

thf(sy_c_Data_Oval_OCV,type,
    cv: 
      !>[R: $tType,L: $tType,V: $tType] : ( const > ( val @ R @ L @ V ) ) ).

thf(sy_c_Data_Oval_OLoc,type,
    loc: 
      !>[L: $tType,R: $tType,V: $tType] : ( L > ( val @ R @ L @ V ) ) ).

thf(sy_c_Data_Oval_ORid,type,
    rid: 
      !>[R: $tType,L: $tType,V: $tType] : ( R > ( val @ R @ L @ V ) ) ).

thf(sy_c_Executions_Osubstitution_Oexecution,type,
    execution: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > ( expr @ R @ L @ V ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).

thf(sy_c_Executions_Osubstitution_Oinductive__invariant,type,
    inductive_invariant: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) > $o ) ).

thf(sy_c_Executions_Osubstitution_Oreachable,type,
    reachable: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).

thf(sy_c_Finite__Set_Ofinite,type,
    finite_finite2: 
      !>[A: $tType] : ( ( set @ A ) > $o ) ).

thf(sy_c_Fun_Obij__betw,type,
    bij_betw: 
      !>[A: $tType,B: $tType] : ( ( A > B ) > ( set @ A ) > ( set @ B ) > $o ) ).

thf(sy_c_Fun_Ofun__upd,type,
    fun_upd: 
      !>[A: $tType,B: $tType] : ( ( A > B ) > A > B > A > B ) ).

thf(sy_c_If,type,
    if: 
      !>[A: $tType] : ( $o > A > A > A ) ).

thf(sy_c_Map_Omap__comp,type,
    map_comp: 
      !>[B: $tType,C: $tType,A: $tType] : ( ( B > ( option @ C ) ) > ( A > ( option @ B ) ) > A > ( option @ C ) ) ).

thf(sy_c_Occurrences_OLID_092_060_094sub_062G,type,
    lID_G: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( set @ L ) ) ).

thf(sy_c_Occurrences_OLID_092_060_094sub_062L,type,
    lID_L: 
      !>[L: $tType,R: $tType,V: $tType] : ( ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > ( set @ L ) ) ).

thf(sy_c_Occurrences_ORID_092_060_094sub_062G,type,
    rID_G: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( set @ R ) ) ).

thf(sy_c_Occurrences_ORID_092_060_094sub_062L,type,
    rID_L: 
      !>[L: $tType,R: $tType,V: $tType] : ( ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > ( set @ R ) ) ).

thf(sy_c_OperationalSemantics_Osubstitution_Odomains__subsume,type,
    domains_subsume: 
      !>[L: $tType,R: $tType,V: $tType] : ( ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > $o ) ).

thf(sy_c_OperationalSemantics_Osubstitution_Odomains__subsume__globally,type,
    domain398919503obally: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).

thf(sy_c_OperationalSemantics_Osubstitution_Orevision__step,type,
    revision_step: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > R > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).

thf(sy_c_OperationalSemantics_Osubstitution_Orevision__step__relaxed,type,
    revisi1433015572elaxed: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > R > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).

thf(sy_c_OperationalSemantics_Osubstitution_Osubsumes__accessible,type,
    subsumes_accessible: 
      !>[R: $tType,L: $tType,V: $tType] : ( R > R > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).

thf(sy_c_OperationalSemantics_Osubstitution_Osubsumes__accessible__globally,type,
    subsum380726323obally: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).

thf(sy_c_Option_Ooption_ONone,type,
    none: 
      !>[A: $tType] : ( option @ A ) ).

thf(sy_c_Option_Ooption_OSome,type,
    some: 
      !>[A: $tType] : ( A > ( option @ A ) ) ).

thf(sy_c_Orderings_Oord__class_Oless__eq,type,
    ord_less_eq: 
      !>[A: $tType] : ( A > A > $o ) ).

thf(sy_c_Orderings_Otop__class_Otop,type,
    top_top: 
      !>[A: $tType] : A ).

thf(sy_c_Product__Type_OPair,type,
    product_Pair: 
      !>[A: $tType,B: $tType] : ( A > B > ( product_prod @ A @ B ) ) ).

thf(sy_c_Product__Type_Ointernal__case__prod,type,
    produc2004651681e_prod: 
      !>[A: $tType,B: $tType,C: $tType] : ( ( A > B > C ) > ( product_prod @ A @ B ) > C ) ).

thf(sy_c_Product__Type_Oold_Oprod_Orec__prod,type,
    product_rec_prod: 
      !>[A: $tType,B: $tType,T: $tType] : ( ( A > B > T ) > ( product_prod @ A @ B ) > T ) ).

thf(sy_c_Renaming_O_092_060R_062_092_060_094sub_062G,type,
    r_G: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( R > R ) > ( L > L ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ).

thf(sy_c_Renaming_O_092_060R_062_092_060_094sub_062L,type,
    r_L: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( R > R ) > ( L > L ) > ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ).

thf(sy_c_Renaming_Oeq__states,type,
    eq_states: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).

thf(sy_c_Renaming_Ois__global__renaming,type,
    is_global_renaming: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( R > R ) > ( L > L ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).

thf(sy_c_Set_OCollect,type,
    collect: 
      !>[A: $tType] : ( ( A > $o ) > ( set @ A ) ) ).

thf(sy_c_Substitution_Osubstitution,type,
    substitution: 
      !>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > $o ) ).

thf(sy_c_member,type,
    member: 
      !>[A: $tType] : ( A > ( set @ A ) > $o ) ).

thf(sy_v__092_060E_062____,type,
    e: cntxt @ r @ l @ v ).

thf(sy_v__092_060alpha_062,type,
    alpha: r > r ).

thf(sy_v__092_060beta_062,type,
    beta: l > l ).

thf(sy_v__092_060sigma_062____,type,
    sigma: l > ( option @ ( val @ r @ l @ v ) ) ).

thf(sy_v__092_060tau_062____,type,
    tau: l > ( option @ ( val @ r @ l @ v ) ) ).

thf(sy_v_e____,type,
    e2: expr @ r @ l @ v ).

thf(sy_v_r,type,
    r2: r ).

thf(sy_v_r_H____,type,
    r3: r ).

thf(sy_v_s,type,
    s: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ).

thf(sy_v_s_H,type,
    s2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ).

thf(sy_v_subst,type,
    subst: ( expr @ r @ l @ v ) > v > ( expr @ r @ l @ v ) > ( expr @ r @ l @ v ) ).

% Relevant facts (255)
thf(fact_0_local_Ofork_I2_J,axiom,
    ( ( s @ r2 )
    = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ tau @ ( plug @ r @ l @ v @ e @ ( rfork @ r @ l @ v @ e2 ) ) ) ) ) ) ).

% local.fork(2)
thf(fact_1_expr_Oinject_I7_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X7: expr @ R @ L @ V,Y7: expr @ R @ L @ V] :
      ( ( ( rfork @ R @ L @ V @ X7 )
        = ( rfork @ R @ L @ V @ Y7 ) )
      = ( X7 = Y7 ) ) ).

% expr.inject(7)
thf(fact_2_injective__cntxt,axiom,
    ! [C: $tType,B: $tType,A: $tType,E: cntxt @ A @ B @ C,E1: expr @ A @ B @ C,E2: expr @ A @ B @ C] :
      ( ( ( plug @ A @ B @ C @ E @ E1 )
        = ( plug @ A @ B @ C @ E @ E2 ) )
      = ( E1 = E2 ) ) ).

% injective_cntxt
thf(fact_3_fun__upd__upd,axiom,
    ! [A: $tType,B: $tType,F: A > B,X: A,Y: B,Z: B] :
      ( ( fun_upd @ A @ B @ ( fun_upd @ A @ B @ F @ X @ Y ) @ X @ Z )
      = ( fun_upd @ A @ B @ F @ X @ Z ) ) ).

% fun_upd_upd
thf(fact_4_fun__upd__triv,axiom,
    ! [B: $tType,A: $tType,F: A > B,X: A] :
      ( ( fun_upd @ A @ B @ F @ X @ ( F @ X ) )
      = F ) ).

% fun_upd_triv
thf(fact_5_fun__upd__apply,axiom,
    ! [A: $tType,B: $tType] :
      ( ( fun_upd @ B @ A )
      = ( ^ [F2: B > A,X2: B,Y2: A,Z2: B] : ( if @ A @ ( Z2 = X2 ) @ Y2 @ ( F2 @ Z2 ) ) ) ) ).

% fun_upd_apply
thf(fact_6_option_Oinject,axiom,
    ! [A: $tType,X22: A,Y22: A] :
      ( ( ( some @ A @ X22 )
        = ( some @ A @ Y22 ) )
      = ( X22 = Y22 ) ) ).

% option.inject
thf(fact_7_prod_Oinject,axiom,
    ! [A: $tType,B: $tType,X1: A,X22: B,Y1: A,Y22: B] :
      ( ( ( product_Pair @ A @ B @ X1 @ X22 )
        = ( product_Pair @ A @ B @ Y1 @ Y22 ) )
      = ( ( X1 = Y1 )
        & ( X22 = Y22 ) ) ) ).

% prod.inject
thf(fact_8_old_Oprod_Oinject,axiom,
    ! [A: $tType,B: $tType,A2: A,B2: B,A3: A,B3: B] :
      ( ( ( product_Pair @ A @ B @ A2 @ B2 )
        = ( product_Pair @ A @ B @ A3 @ B3 ) )
      = ( ( A2 = A3 )
        & ( B2 = B3 ) ) ) ).

% old.prod.inject
thf(fact_9_LID__local__store_Ocases,axiom,
    ! [V: $tType,L: $tType,R: $tType,X: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) )] :
      ~ ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E3: expr @ R @ L @ V] :
          ( X
         != ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E3 ) ) ) ).

% LID_local_store.cases
thf(fact_10_LID__local__store_Oinduct,axiom,
    ! [V: $tType,R: $tType,L: $tType,P: ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > $o,A0: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) )] :
      ( ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E3: expr @ R @ L @ V] : ( P @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E3 ) ) )
     => ( P @ A0 ) ) ).

% LID_local_store.induct
thf(fact_11__092_060R_062_092_060_094sub_062L_Oinduct,axiom,
    ! [V: $tType,R: $tType,L: $tType,P: ( R > R ) > ( L > L ) > ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > $o,A0: R > R,A1: L > L,A22: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) )] :
      ( ! [Alpha: R > R,Beta: L > L,Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E3: expr @ R @ L @ V] : ( P @ Alpha @ Beta @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E3 ) ) )
     => ( P @ A0 @ A1 @ A22 ) ) ).

% \<R>\<^sub>L.induct
thf(fact_12_map__upd__eqD1,axiom,
    ! [A: $tType,B: $tType,M: A > ( option @ B ),A2: A,X: B,N: A > ( option @ B ),Y: B] :
      ( ( ( fun_upd @ A @ ( option @ B ) @ M @ A2 @ ( some @ B @ X ) )
        = ( fun_upd @ A @ ( option @ B ) @ N @ A2 @ ( some @ B @ Y ) ) )
     => ( X = Y ) ) ).

% map_upd_eqD1
thf(fact_13__092_060R_062_092_060_094sub_062L_Ocases,axiom,
    ! [V: $tType,L: $tType,R: $tType,X: product_prod @ ( R > R ) @ ( product_prod @ ( L > L ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ~ ! [Alpha: R > R,Beta: L > L,Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E3: expr @ R @ L @ V] :
          ( X
         != ( product_Pair @ ( R > R ) @ ( product_prod @ ( L > L ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ Alpha @ ( product_Pair @ ( L > L ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Beta @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E3 ) ) ) ) ) ).

% \<R>\<^sub>L.cases
thf(fact_14__092_060R_062_092_060_094sub_062S_Ocases,axiom,
    ! [R: $tType,V: $tType,L: $tType,X: product_prod @ ( R > R ) @ ( product_prod @ ( L > L ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ L ) )] :
      ~ ! [Alpha: R > R,Beta: L > L,Sigma: L > ( option @ ( val @ R @ L @ V ) ),L2: L] :
          ( X
         != ( product_Pair @ ( R > R ) @ ( product_prod @ ( L > L ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ L ) ) @ Alpha @ ( product_Pair @ ( L > L ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ L ) @ Beta @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ L @ Sigma @ L2 ) ) ) ) ).

% \<R>\<^sub>S.cases
thf(fact_15_old_Oprod_Oinducts,axiom,
    ! [B: $tType,A: $tType,P: ( product_prod @ A @ B ) > $o,Prod: product_prod @ A @ B] :
      ( ! [A4: A,B4: B] : ( P @ ( product_Pair @ A @ B @ A4 @ B4 ) )
     => ( P @ Prod ) ) ).

% old.prod.inducts
thf(fact_16_old_Oprod_Oexhaust,axiom,
    ! [A: $tType,B: $tType,Y: product_prod @ A @ B] :
      ~ ! [A4: A,B4: B] :
          ( Y
         != ( product_Pair @ A @ B @ A4 @ B4 ) ) ).

% old.prod.exhaust
thf(fact_17_Pair__inject,axiom,
    ! [A: $tType,B: $tType,A2: A,B2: B,A3: A,B3: B] :
      ( ( ( product_Pair @ A @ B @ A2 @ B2 )
        = ( product_Pair @ A @ B @ A3 @ B3 ) )
     => ~ ( ( A2 = A3 )
         => ( B2 != B3 ) ) ) ).

% Pair_inject
thf(fact_18_prod__cases,axiom,
    ! [B: $tType,A: $tType,P: ( product_prod @ A @ B ) > $o,P2: product_prod @ A @ B] :
      ( ! [A4: A,B4: B] : ( P @ ( product_Pair @ A @ B @ A4 @ B4 ) )
     => ( P @ P2 ) ) ).

% prod_cases
thf(fact_19_surj__pair,axiom,
    ! [A: $tType,B: $tType,P2: product_prod @ A @ B] :
    ? [X3: A,Y3: B] :
      ( P2
      = ( product_Pair @ A @ B @ X3 @ Y3 ) ) ).

% surj_pair
thf(fact_20_fun__upd__idem__iff,axiom,
    ! [A: $tType,B: $tType,F: A > B,X: A,Y: B] :
      ( ( ( fun_upd @ A @ B @ F @ X @ Y )
        = F )
      = ( ( F @ X )
        = Y ) ) ).

% fun_upd_idem_iff
thf(fact_21_fun__upd__twist,axiom,
    ! [A: $tType,B: $tType,A2: A,C2: A,M: A > B,B2: B,D: B] :
      ( ( A2 != C2 )
     => ( ( fun_upd @ A @ B @ ( fun_upd @ A @ B @ M @ A2 @ B2 ) @ C2 @ D )
        = ( fun_upd @ A @ B @ ( fun_upd @ A @ B @ M @ C2 @ D ) @ A2 @ B2 ) ) ) ).

% fun_upd_twist
thf(fact_22_fun__upd__other,axiom,
    ! [B: $tType,A: $tType,Z: A,X: A,F: A > B,Y: B] :
      ( ( Z != X )
     => ( ( fun_upd @ A @ B @ F @ X @ Y @ Z )
        = ( F @ Z ) ) ) ).

% fun_upd_other
thf(fact_23_fun__upd__same,axiom,
    ! [B: $tType,A: $tType,F: B > A,X: B,Y: A] :
      ( ( fun_upd @ B @ A @ F @ X @ Y @ X )
      = Y ) ).

% fun_upd_same
thf(fact_24_fun__upd__idem,axiom,
    ! [A: $tType,B: $tType,F: B > A,X: B,Y: A] :
      ( ( ( F @ X )
        = Y )
     => ( ( fun_upd @ B @ A @ F @ X @ Y )
        = F ) ) ).

% fun_upd_idem
thf(fact_25_fun__upd__eqD,axiom,
    ! [A: $tType,B: $tType,F: A > B,X: A,Y: B,G: A > B,Z: B] :
      ( ( ( fun_upd @ A @ B @ F @ X @ Y )
        = ( fun_upd @ A @ B @ G @ X @ Z ) )
     => ( Y = Z ) ) ).

% fun_upd_eqD
thf(fact_26_fun__upd__def,axiom,
    ! [B: $tType,A: $tType] :
      ( ( fun_upd @ A @ B )
      = ( ^ [F2: A > B,A5: A,B5: B,X2: A] : ( if @ B @ ( X2 = A5 ) @ B5 @ ( F2 @ X2 ) ) ) ) ).

% fun_upd_def
thf(fact_27_prod__induct7,axiom,
    ! [G2: $tType,F3: $tType,E4: $tType,D2: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ ( product_prod @ F3 @ G2 ) ) ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ ( product_prod @ F3 @ G2 ) ) ) ) )] :
      ( ! [A4: A,B4: B,C3: C,D3: D2,E3: E4,F4: F3,G3: G2] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ ( product_prod @ F3 @ G2 ) ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ ( product_prod @ F3 @ G2 ) ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ ( product_prod @ F3 @ G2 ) ) ) @ C3 @ ( product_Pair @ D2 @ ( product_prod @ E4 @ ( product_prod @ F3 @ G2 ) ) @ D3 @ ( product_Pair @ E4 @ ( product_prod @ F3 @ G2 ) @ E3 @ ( product_Pair @ F3 @ G2 @ F4 @ G3 ) ) ) ) ) ) )
     => ( P @ X ) ) ).

% prod_induct7
thf(fact_28_prod__induct6,axiom,
    ! [F3: $tType,E4: $tType,D2: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ F3 ) ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ F3 ) ) ) )] :
      ( ! [A4: A,B4: B,C3: C,D3: D2,E3: E4,F4: F3] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ F3 ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ F3 ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ F3 ) ) @ C3 @ ( product_Pair @ D2 @ ( product_prod @ E4 @ F3 ) @ D3 @ ( product_Pair @ E4 @ F3 @ E3 @ F4 ) ) ) ) ) )
     => ( P @ X ) ) ).

% prod_induct6
thf(fact_29_prod__induct5,axiom,
    ! [E4: $tType,D2: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ E4 ) ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ E4 ) ) )] :
      ( ! [A4: A,B4: B,C3: C,D3: D2,E3: E4] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ E4 ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D2 @ E4 ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D2 @ E4 ) @ C3 @ ( product_Pair @ D2 @ E4 @ D3 @ E3 ) ) ) ) )
     => ( P @ X ) ) ).

% prod_induct5
thf(fact_30_prod__induct4,axiom,
    ! [D2: $tType,C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D2 ) ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D2 ) )] :
      ( ! [A4: A,B4: B,C3: C,D3: D2] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ D2 ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ D2 ) @ B4 @ ( product_Pair @ C @ D2 @ C3 @ D3 ) ) ) )
     => ( P @ X ) ) ).

% prod_induct4
thf(fact_31_prod__induct3,axiom,
    ! [C: $tType,B: $tType,A: $tType,P: ( product_prod @ A @ ( product_prod @ B @ C ) ) > $o,X: product_prod @ A @ ( product_prod @ B @ C )] :
      ( ! [A4: A,B4: B,C3: C] : ( P @ ( product_Pair @ A @ ( product_prod @ B @ C ) @ A4 @ ( product_Pair @ B @ C @ B4 @ C3 ) ) )
     => ( P @ X ) ) ).

% prod_induct3
thf(fact_32_prod__cases7,axiom,
    ! [A: $tType,B: $tType,C: $tType,D2: $tType,E4: $tType,F3: $tType,G2: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ ( product_prod @ F3 @ G2 ) ) ) ) )] :
      ~ ! [A4: A,B4: B,C3: C,D3: D2,E3: E4,F4: F3,G3: G2] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ ( product_prod @ F3 @ G2 ) ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ ( product_prod @ F3 @ G2 ) ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ ( product_prod @ F3 @ G2 ) ) ) @ C3 @ ( product_Pair @ D2 @ ( product_prod @ E4 @ ( product_prod @ F3 @ G2 ) ) @ D3 @ ( product_Pair @ E4 @ ( product_prod @ F3 @ G2 ) @ E3 @ ( product_Pair @ F3 @ G2 @ F4 @ G3 ) ) ) ) ) ) ) ).

% prod_cases7
thf(fact_33_prod__cases6,axiom,
    ! [A: $tType,B: $tType,C: $tType,D2: $tType,E4: $tType,F3: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ F3 ) ) ) )] :
      ~ ! [A4: A,B4: B,C3: C,D3: D2,E3: E4,F4: F3] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ F3 ) ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ F3 ) ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D2 @ ( product_prod @ E4 @ F3 ) ) @ C3 @ ( product_Pair @ D2 @ ( product_prod @ E4 @ F3 ) @ D3 @ ( product_Pair @ E4 @ F3 @ E3 @ F4 ) ) ) ) ) ) ).

% prod_cases6
thf(fact_34_prod__cases5,axiom,
    ! [A: $tType,B: $tType,C: $tType,D2: $tType,E4: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ E4 ) ) )] :
      ~ ! [A4: A,B4: B,C3: C,D3: D2,E3: E4] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ ( product_prod @ D2 @ E4 ) ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ ( product_prod @ D2 @ E4 ) ) @ B4 @ ( product_Pair @ C @ ( product_prod @ D2 @ E4 ) @ C3 @ ( product_Pair @ D2 @ E4 @ D3 @ E3 ) ) ) ) ) ).

% prod_cases5
thf(fact_35_prod__cases4,axiom,
    ! [A: $tType,B: $tType,C: $tType,D2: $tType,Y: product_prod @ A @ ( product_prod @ B @ ( product_prod @ C @ D2 ) )] :
      ~ ! [A4: A,B4: B,C3: C,D3: D2] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ ( product_prod @ C @ D2 ) ) @ A4 @ ( product_Pair @ B @ ( product_prod @ C @ D2 ) @ B4 @ ( product_Pair @ C @ D2 @ C3 @ D3 ) ) ) ) ).

% prod_cases4
thf(fact_36_prod__cases3,axiom,
    ! [A: $tType,B: $tType,C: $tType,Y: product_prod @ A @ ( product_prod @ B @ C )] :
      ~ ! [A4: A,B4: B,C3: C] :
          ( Y
         != ( product_Pair @ A @ ( product_prod @ B @ C ) @ A4 @ ( product_Pair @ B @ C @ B4 @ C3 ) ) ) ).

% prod_cases3
thf(fact_37_combine_Ocases,axiom,
    ! [B: $tType,A: $tType,X: product_prod @ ( A > ( option @ B ) ) @ ( product_prod @ ( A > ( option @ B ) ) @ A )] :
      ~ ! [F4: A > ( option @ B ),G3: A > ( option @ B ),X3: A] :
          ( X
         != ( product_Pair @ ( A > ( option @ B ) ) @ ( product_prod @ ( A > ( option @ B ) ) @ A ) @ F4 @ ( product_Pair @ ( A > ( option @ B ) ) @ A @ G3 @ X3 ) ) ) ).

% combine.cases
thf(fact_38_map__upd__Some__unfold,axiom,
    ! [B: $tType,A: $tType,M: B > ( option @ A ),A2: B,B2: A,X: B,Y: A] :
      ( ( ( fun_upd @ B @ ( option @ A ) @ M @ A2 @ ( some @ A @ B2 ) @ X )
        = ( some @ A @ Y ) )
      = ( ( ( X = A2 )
          & ( B2 = Y ) )
        | ( ( X != A2 )
          & ( ( M @ X )
            = ( some @ A @ Y ) ) ) ) ) ).

% map_upd_Some_unfold
thf(fact_39_map__upd__triv,axiom,
    ! [A: $tType,B: $tType,T2: B > ( option @ A ),K: B,X: A] :
      ( ( ( T2 @ K )
        = ( some @ A @ X ) )
     => ( ( fun_upd @ B @ ( option @ A ) @ T2 @ K @ ( some @ A @ X ) )
        = T2 ) ) ).

% map_upd_triv
thf(fact_40_old_Oprod_Orec,axiom,
    ! [A: $tType,T: $tType,B: $tType,F1: A > B > T,A2: A,B2: B] :
      ( ( product_rec_prod @ A @ B @ T @ F1 @ ( product_Pair @ A @ B @ A2 @ B2 ) )
      = ( F1 @ A2 @ B2 ) ) ).

% old.prod.rec
thf(fact_41_LID__local__store_Osimps,axiom,
    ! [V: $tType,R: $tType,L: $tType,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E5: expr @ R @ L @ V] :
      ( ( lID_local_store @ L @ R @ V @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ E5 ) ) )
      = Tau2 ) ).

% LID_local_store.simps
thf(fact_42_LID__local__store_Oelims,axiom,
    ! [V: $tType,R: $tType,L: $tType,X: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ),Y: L > ( option @ ( val @ R @ L @ V ) )] :
      ( ( ( lID_local_store @ L @ R @ V @ X )
        = Y )
     => ~ ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) )] :
            ( ? [E3: expr @ R @ L @ V] :
                ( X
                = ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E3 ) ) )
           => ( Y != Tau ) ) ) ).

% LID_local_store.elims
thf(fact_43_LID__expression_Osimps,axiom,
    ! [V: $tType,L: $tType,R: $tType,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E5: expr @ R @ L @ V] :
      ( ( lID_expression @ L @ R @ V @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ E5 ) ) )
      = E5 ) ).

% LID_expression.simps
thf(fact_44_LID__expression_Oelims,axiom,
    ! [V: $tType,L: $tType,R: $tType,X: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ),Y: expr @ R @ L @ V] :
      ( ( ( lID_expression @ L @ R @ V @ X )
        = Y )
     => ~ ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E3: expr @ R @ L @ V] :
            ( ( X
              = ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E3 ) ) )
           => ( Y != E3 ) ) ) ).

% LID_expression.elims
thf(fact_45_mem__Collect__eq,axiom,
    ! [A: $tType,A2: A,P: A > $o] :
      ( ( member @ A @ A2 @ ( collect @ A @ P ) )
      = ( P @ A2 ) ) ).

% mem_Collect_eq
thf(fact_46_Collect__mem__eq,axiom,
    ! [A: $tType,A6: set @ A] :
      ( ( collect @ A
        @ ^ [X2: A] : ( member @ A @ X2 @ A6 ) )
      = A6 ) ).

% Collect_mem_eq
thf(fact_47_Collect__cong,axiom,
    ! [A: $tType,P: A > $o,Q: A > $o] :
      ( ! [X3: A] :
          ( ( P @ X3 )
          = ( Q @ X3 ) )
     => ( ( collect @ A @ P )
        = ( collect @ A @ Q ) ) ) ).

% Collect_cong
thf(fact_48_ext,axiom,
    ! [B: $tType,A: $tType,F: A > B,G: A > B] :
      ( ! [X3: A] :
          ( ( F @ X3 )
          = ( G @ X3 ) )
     => ( F = G ) ) ).

% ext
thf(fact_49_local_Ofork_I3_J,axiom,
    ~ ( member @ r @ r3 @ ( rID_G @ r @ l @ v @ s ) ) ).

% local.fork(3)
thf(fact_50_LID__snapshot_Osimps,axiom,
    ! [V: $tType,R: $tType,L: $tType,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E5: expr @ R @ L @ V] :
      ( ( lID_snapshot @ L @ R @ V @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ E5 ) ) )
      = Sigma2 ) ).

% LID_snapshot.simps
thf(fact_51_LID__snapshot_Oelims,axiom,
    ! [V: $tType,R: $tType,L: $tType,X: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ),Y: L > ( option @ ( val @ R @ L @ V ) )] :
      ( ( ( lID_snapshot @ L @ R @ V @ X )
        = Y )
     => ~ ! [Sigma: L > ( option @ ( val @ R @ L @ V ) )] :
            ( ? [Tau: L > ( option @ ( val @ R @ L @ V ) ),E3: expr @ R @ L @ V] :
                ( X
                = ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E3 ) ) )
           => ( Y != Sigma ) ) ) ).

% LID_snapshot.elims
thf(fact_52_internal__case__prod__conv,axiom,
    ! [B: $tType,A: $tType,C: $tType,C2: B > C > A,A2: B,B2: C] :
      ( ( produc2004651681e_prod @ B @ C @ A @ C2 @ ( product_Pair @ B @ C @ A2 @ B2 ) )
      = ( C2 @ A2 @ B2 ) ) ).

% internal_case_prod_conv
thf(fact_53_map__comp__simps_I2_J,axiom,
    ! [B: $tType,C: $tType,A: $tType,M2: B > ( option @ A ),K: B,K2: A,M1: A > ( option @ C )] :
      ( ( ( M2 @ K )
        = ( some @ A @ K2 ) )
     => ( ( map_comp @ A @ C @ B @ M1 @ M2 @ K )
        = ( M1 @ K2 ) ) ) ).

% map_comp_simps(2)
thf(fact_54_local_Ofork_I1_J,axiom,
    ( s2
    = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ s @ r2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ tau @ ( plug @ r @ l @ v @ e @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ r3 ) ) ) ) ) ) ) @ r3
      @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
        @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ sigma @ tau )
          @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
            @ ^ [X2: l] : ( none @ ( val @ r @ l @ v ) )
            @ e2 ) ) ) ) ) ).

% local.fork(1)
thf(fact_55_expr_Oinject_I1_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X1: val @ R @ L @ V,Y1: val @ R @ L @ V] :
      ( ( ( ve @ R @ L @ V @ X1 )
        = ( ve @ R @ L @ V @ Y1 ) )
      = ( X1 = Y1 ) ) ).

% expr.inject(1)
thf(fact_56_val_Oinject_I4_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X4: R,Y4: R] :
      ( ( ( rid @ R @ L @ V @ X4 )
        = ( rid @ R @ L @ V @ Y4 ) )
      = ( X4 = Y4 ) ) ).

% val.inject(4)
thf(fact_57_not__None__eq,axiom,
    ! [A: $tType,X: option @ A] :
      ( ( X
       != ( none @ A ) )
      = ( ? [Y2: A] :
            ( X
            = ( some @ A @ Y2 ) ) ) ) ).

% not_None_eq
thf(fact_58_not__Some__eq,axiom,
    ! [A: $tType,X: option @ A] :
      ( ( ! [Y2: A] :
            ( X
           != ( some @ A @ Y2 ) ) )
      = ( X
        = ( none @ A ) ) ) ).

% not_Some_eq
thf(fact_59_empty__upd__none,axiom,
    ! [B: $tType,A: $tType,X: A] :
      ( ( fun_upd @ A @ ( option @ B )
        @ ^ [X2: A] : ( none @ B )
        @ X
        @ ( none @ B ) )
      = ( ^ [X2: A] : ( none @ B ) ) ) ).

% empty_upd_none
thf(fact_60_map__comp__simps_I1_J,axiom,
    ! [B: $tType,A: $tType,C: $tType,M2: B > ( option @ A ),K: B,M1: A > ( option @ C )] :
      ( ( ( M2 @ K )
        = ( none @ A ) )
     => ( ( map_comp @ A @ C @ B @ M1 @ M2 @ K )
        = ( none @ C ) ) ) ).

% map_comp_simps(1)
thf(fact_61_map__comp__empty_I2_J,axiom,
    ! [B: $tType,D2: $tType,C: $tType,M: C > ( option @ B )] :
      ( ( map_comp @ B @ D2 @ C
        @ ^ [X2: B] : ( none @ D2 )
        @ M )
      = ( ^ [X2: C] : ( none @ D2 ) ) ) ).

% map_comp_empty(2)
thf(fact_62_map__comp__empty_I1_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,M: C > ( option @ B )] :
      ( ( map_comp @ C @ B @ A @ M
        @ ^ [X2: A] : ( none @ C ) )
      = ( ^ [X2: A] : ( none @ B ) ) ) ).

% map_comp_empty(1)
thf(fact_63_combine_Oelims,axiom,
    ! [B: $tType,A: $tType,X: A > ( option @ B ),Xa: A > ( option @ B ),Xb: A,Y: option @ B] :
      ( ( ( combine @ A @ B @ X @ Xa @ Xb )
        = Y )
     => ( ( ( ( Xa @ Xb )
            = ( none @ B ) )
         => ( Y
            = ( X @ Xb ) ) )
        & ( ( ( Xa @ Xb )
           != ( none @ B ) )
         => ( Y
            = ( Xa @ Xb ) ) ) ) ) ).

% combine.elims
thf(fact_64_combine_Osimps,axiom,
    ! [B: $tType,A: $tType] :
      ( ( combine @ A @ B )
      = ( ^ [F2: A > ( option @ B ),G4: A > ( option @ B ),X2: A] :
            ( if @ ( option @ B )
            @ ( ( G4 @ X2 )
              = ( none @ B ) )
            @ ( F2 @ X2 )
            @ ( G4 @ X2 ) ) ) ) ).

% combine.simps
thf(fact_65_map__comp__None__iff,axiom,
    ! [A: $tType,C: $tType,B: $tType,M1: B > ( option @ A ),M2: C > ( option @ B ),K: C] :
      ( ( ( map_comp @ B @ A @ C @ M1 @ M2 @ K )
        = ( none @ A ) )
      = ( ( ( M2 @ K )
          = ( none @ B ) )
        | ? [K3: B] :
            ( ( ( M2 @ K )
              = ( some @ B @ K3 ) )
            & ( ( M1 @ K3 )
              = ( none @ A ) ) ) ) ) ).

% map_comp_None_iff
thf(fact_66_option_Odistinct_I1_J,axiom,
    ! [A: $tType,X22: A] :
      ( ( none @ A )
     != ( some @ A @ X22 ) ) ).

% option.distinct(1)
thf(fact_67_option_OdiscI,axiom,
    ! [A: $tType,Option: option @ A,X22: A] :
      ( ( Option
        = ( some @ A @ X22 ) )
     => ( Option
       != ( none @ A ) ) ) ).

% option.discI
thf(fact_68_option_Oexhaust,axiom,
    ! [A: $tType,Y: option @ A] :
      ( ( Y
       != ( none @ A ) )
     => ~ ! [X23: A] :
            ( Y
           != ( some @ A @ X23 ) ) ) ).

% option.exhaust
thf(fact_69_option_Oinducts,axiom,
    ! [A: $tType,P: ( option @ A ) > $o,Option: option @ A] :
      ( ( P @ ( none @ A ) )
     => ( ! [X3: A] : ( P @ ( some @ A @ X3 ) )
       => ( P @ Option ) ) ) ).

% option.inducts
thf(fact_70_split__option__ex,axiom,
    ! [A: $tType] :
      ( ( ^ [P3: ( option @ A ) > $o] :
          ? [X5: option @ A] : ( P3 @ X5 ) )
      = ( ^ [P4: ( option @ A ) > $o] :
            ( ( P4 @ ( none @ A ) )
            | ? [X2: A] : ( P4 @ ( some @ A @ X2 ) ) ) ) ) ).

% split_option_ex
thf(fact_71_split__option__all,axiom,
    ! [A: $tType] :
      ( ( ^ [P3: ( option @ A ) > $o] :
          ! [X5: option @ A] : ( P3 @ X5 ) )
      = ( ^ [P4: ( option @ A ) > $o] :
            ( ( P4 @ ( none @ A ) )
            & ! [X2: A] : ( P4 @ ( some @ A @ X2 ) ) ) ) ) ).

% split_option_all
thf(fact_72_combine__options__cases,axiom,
    ! [A: $tType,B: $tType,X: option @ A,P: ( option @ A ) > ( option @ B ) > $o,Y: option @ B] :
      ( ( ( X
          = ( none @ A ) )
       => ( P @ X @ Y ) )
     => ( ( ( Y
            = ( none @ B ) )
         => ( P @ X @ Y ) )
       => ( ! [A4: A,B4: B] :
              ( ( X
                = ( some @ A @ A4 ) )
             => ( ( Y
                  = ( some @ B @ B4 ) )
               => ( P @ X @ Y ) ) )
         => ( P @ X @ Y ) ) ) ) ).

% combine_options_cases
thf(fact_73_expr_Odistinct_I11_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X1: val @ R @ L @ V,X7: expr @ R @ L @ V] :
      ( ( ve @ R @ L @ V @ X1 )
     != ( rfork @ R @ L @ V @ X7 ) ) ).

% expr.distinct(11)
thf(fact_74_map__upd__nonempty,axiom,
    ! [B: $tType,A: $tType,T2: A > ( option @ B ),K: A,X: B] :
      ( ( fun_upd @ A @ ( option @ B ) @ T2 @ K @ ( some @ B @ X ) )
     != ( ^ [X2: A] : ( none @ B ) ) ) ).

% map_upd_nonempty
thf(fact_75_map__comp__Some__iff,axiom,
    ! [A: $tType,C: $tType,B: $tType,M1: B > ( option @ A ),M2: C > ( option @ B ),K: C,V2: A] :
      ( ( ( map_comp @ B @ A @ C @ M1 @ M2 @ K )
        = ( some @ A @ V2 ) )
      = ( ? [K3: B] :
            ( ( ( M2 @ K )
              = ( some @ B @ K3 ) )
            & ( ( M1 @ K3 )
              = ( some @ A @ V2 ) ) ) ) ) ).

% map_comp_Some_iff
thf(fact_76_restrictions__inwards,axiom,
    ! [A: $tType,B: $tType,X: A,X6: A,F: A > ( option @ B ),Y: B] :
      ( ( X != X6 )
     => ( ( fun_upd @ A @ ( option @ B ) @ ( fun_upd @ A @ ( option @ B ) @ F @ X @ ( some @ B @ Y ) ) @ X6 @ ( none @ B ) )
        = ( fun_upd @ A @ ( option @ B ) @ ( fun_upd @ A @ ( option @ B ) @ F @ X6 @ ( none @ B ) ) @ X @ ( some @ B @ Y ) ) ) ) ).

% restrictions_inwards
thf(fact_77_RID_092_060_094sub_062GI_I1_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R2: B,V2: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) )] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ V2 ) )
     => ( member @ B @ R2 @ ( rID_G @ B @ A @ C @ S ) ) ) ).

% RID\<^sub>GI(1)
thf(fact_78_revision__step__relaxed_Ofork,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,E5: expr @ r @ l @ v,R3: r] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rfork @ r @ l @ v @ E5 ) ) ) ) ) )
     => ( ~ ( member @ r @ R3 @ ( rID_G @ r @ l @ v @ S ) )
       => ( revisi1433015572elaxed @ r @ l @ v @ subst @ R2 @ S
          @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) @ R3
            @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
              @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 )
                @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
                  @ ^ [X2: l] : ( none @ ( val @ r @ l @ v ) )
                  @ E5 ) ) ) ) ) ) ) ).

% revision_step_relaxed.fork
thf(fact_79_revision__step_Ofork,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,E5: expr @ r @ l @ v,R3: r] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rfork @ r @ l @ v @ E5 ) ) ) ) ) )
     => ( ~ ( member @ r @ R3 @ ( rID_G @ r @ l @ v @ S ) )
       => ( revision_step @ r @ l @ v @ subst @ R2 @ S
          @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) @ R3
            @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
              @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 )
                @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
                  @ ^ [X2: l] : ( none @ ( val @ r @ l @ v ) )
                  @ E5 ) ) ) ) ) ) ) ).

% revision_step.fork
thf(fact_80__092_060alpha_062r_H__fresh,axiom,
    ~ ( member @ r @ ( alpha @ r3 ) @ ( rID_G @ r @ l @ v @ ( r_G @ r @ l @ v @ alpha @ beta @ s ) ) ) ).

% \<alpha>r'_fresh
thf(fact_81_substitution_Orevision__step__relaxed_Ofork,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,E5: expr @ R @ L @ V,R3: R] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rfork @ R @ L @ V @ E5 ) ) ) ) ) )
       => ( ~ ( member @ R @ R3 @ ( rID_G @ R @ L @ V @ S ) )
         => ( revisi1433015572elaxed @ R @ L @ V @ Subst @ R2 @ S
            @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) @ R3
              @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) )
                @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 )
                  @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V )
                    @ ^ [X2: L] : ( none @ ( val @ R @ L @ V ) )
                    @ E5 ) ) ) ) ) ) ) ) ).

% substitution.revision_step_relaxed.fork
thf(fact_82_substitution_Ofork__pseudodeterministic,axiom,
    ! [L: $tType,V: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,E5: expr @ R @ L @ V,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rfork @ R @ L @ V @ E5 ) ) ) ) ) )
       => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
          = ( ? [R4: R] :
                ( ~ ( member @ R @ R4 @ ( rID_G @ R @ L @ V @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rfork @ R @ L @ V @ E5 ) ) ) ) ) ) ) )
                & ( S2
                  = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R4 ) ) ) ) ) ) ) @ R4
                    @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) )
                      @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 )
                        @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V )
                          @ ^ [X2: L] : ( none @ ( val @ R @ L @ V ) )
                          @ E5 ) ) ) ) ) ) ) ) ) ) ).

% substitution.fork_pseudodeterministic
thf(fact_83_local_Ostep,axiom,
    revision_step @ r @ l @ v @ subst @ r2 @ s @ s2 ).

% local.step
thf(fact_84_substitution__axioms,axiom,
    substitution @ r @ l @ v @ subst ).

% substitution_axioms
thf(fact_85_rename__empty_I2_J,axiom,
    ! [A: $tType,D2: $tType,B: $tType,Alpha2: B > B,Beta2: A > A] :
      ( ( r_G @ B @ A @ D2 @ Alpha2 @ Beta2
        @ ^ [X2: B] : ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ D2 ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ D2 ) ) ) @ ( expr @ B @ A @ D2 ) ) ) ) )
      = ( ^ [X2: B] : ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ D2 ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ D2 ) ) ) @ ( expr @ B @ A @ D2 ) ) ) ) ) ) ).

% rename_empty(2)
thf(fact_86_in__restricted__global__in__unrestricted__global_I1_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,R3: A,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
      ( ( member @ A @ R3 @ ( rID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) )
     => ( member @ A @ R3 @ ( rID_G @ A @ B @ C @ S ) ) ) ).

% in_restricted_global_in_unrestricted_global(1)
thf(fact_87_only__fork__introduces__rids_H,axiom,
    ! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r] :
      ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
     => ( ! [Sigma: l > ( option @ ( val @ r @ l @ v ) ),Tau: l > ( option @ ( val @ r @ l @ v ) ),E6: cntxt @ r @ l @ v,E3: expr @ r @ l @ v] :
            ( ( S @ R2 )
           != ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ ( plug @ r @ l @ v @ E6 @ ( rfork @ r @ l @ v @ E3 ) ) ) ) ) )
       => ( ~ ( member @ r @ R3 @ ( rID_G @ r @ l @ v @ S ) )
         => ~ ( member @ r @ R3 @ ( rID_G @ r @ l @ v @ S2 ) ) ) ) ) ).

% only_fork_introduces_rids'
thf(fact_88_in__restricted__global__in__updated__global_I1_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,R3: A,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A,Ls: product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) )] :
      ( ( member @ A @ R3 @ ( rID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) )
     => ( member @ A @ R3 @ ( rID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) @ Ls ) ) ) ) ) ).

% in_restricted_global_in_updated_global(1)
thf(fact_89_fork__pseudodeterministic,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,E5: expr @ r @ l @ v,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rfork @ r @ l @ v @ E5 ) ) ) ) ) )
     => ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
        = ( ? [R4: r] :
              ( ~ ( member @ r @ R4 @ ( rID_G @ r @ l @ v @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rfork @ r @ l @ v @ E5 ) ) ) ) ) ) ) )
              & ( S2
                = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R4 ) ) ) ) ) ) ) @ R4
                  @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
                    @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 )
                      @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
                        @ ^ [X2: l] : ( none @ ( val @ r @ l @ v ) )
                        @ E5 ) ) ) ) ) ) ) ) ) ).

% fork_pseudodeterministic
thf(fact_90_substitution_Orevision__step_Ocong,axiom,
    ! [V: $tType,L: $tType,R: $tType] :
      ( ( revision_step @ R @ L @ V )
      = ( revision_step @ R @ L @ V ) ) ).

% substitution.revision_step.cong
thf(fact_91_substitution_Orevision__step__relaxed_Ocong,axiom,
    ! [V: $tType,L: $tType,R: $tType] :
      ( ( revisi1433015572elaxed @ R @ L @ V )
      = ( revisi1433015572elaxed @ R @ L @ V ) ) ).

% substitution.revision_step_relaxed.cong
thf(fact_92_substitution_Oonly__fork__introduces__rids_H,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
       => ( ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E6: cntxt @ R @ L @ V,E3: expr @ R @ L @ V] :
              ( ( S @ R2 )
             != ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ ( plug @ R @ L @ V @ E6 @ ( rfork @ R @ L @ V @ E3 ) ) ) ) ) )
         => ( ~ ( member @ R @ R3 @ ( rID_G @ R @ L @ V @ S ) )
           => ~ ( member @ R @ R3 @ ( rID_G @ R @ L @ V @ S2 ) ) ) ) ) ) ).

% substitution.only_fork_introduces_rids'
thf(fact_93_substitution_Orevision__step_Ofork,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,E5: expr @ R @ L @ V,R3: R] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rfork @ R @ L @ V @ E5 ) ) ) ) ) )
       => ( ~ ( member @ R @ R3 @ ( rID_G @ R @ L @ V @ S ) )
         => ( revision_step @ R @ L @ V @ Subst @ R2 @ S
            @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) @ R3
              @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) )
                @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 )
                  @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V )
                    @ ^ [X2: L] : ( none @ ( val @ R @ L @ V ) )
                    @ E5 ) ) ) ) ) ) ) ) ).

% substitution.revision_step.fork
thf(fact_94_local__and__fork__commute,axiom,
    ! [S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,X: product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ),S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,R5: r,E5: expr @ r @ l @ v] :
      ( ( S_2
        = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X ) ) )
     => ( ( S_22
          = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R5 ) ) ) ) ) ) ) @ R5
            @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
              @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 )
                @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
                  @ ^ [X2: l] : ( none @ ( val @ r @ l @ v ) )
                  @ E5 ) ) ) ) )
       => ( ( ( S_2 @ R3 )
            = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rfork @ r @ l @ v @ E5 ) ) ) ) ) )
         => ( ~ ( member @ r @ R5 @ ( rID_G @ r @ l @ v @ S_2 ) )
           => ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22
                @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )
                  @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R5 ) ) ) ) ) ) ) @ R5
                    @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
                      @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 )
                        @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
                          @ ^ [X2: l] : ( none @ ( val @ r @ l @ v ) )
                          @ E5 ) ) ) )
                  @ R2
                  @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X ) ) )
             => ( ( R2 != R3 )
               => ( ( R2 != R5 )
                 => ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
                      ( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
                      & ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
                        | ( S_2 = S_3 ) )
                      & ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
                        | ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ).

% local_and_fork_commute
thf(fact_95_revision__step__relaxed_Ojoin_092_060_094sub_062_092_060epsilon_062,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,R3: r] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
     => ( ( ( S @ R3 )
          = ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) )
       => ( revisi1433015572elaxed @ r @ l @ v @ subst @ R2 @ S
          @ ^ [X2: r] : ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ).

% revision_step_relaxed.join\<^sub>\<epsilon>
thf(fact_96_revision__step_Ojoin_092_060_094sub_062_092_060epsilon_062,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,R3: r] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
     => ( ( ( S @ R3 )
          = ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) )
       => ( revision_step @ r @ l @ v @ subst @ R2 @ S
          @ ^ [X2: r] : ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ).

% revision_step.join\<^sub>\<epsilon>
thf(fact_97_substitution_Olocal__and__fork__commute,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,X: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ),S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,R5: R,E5: expr @ R @ L @ V] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( S_2
          = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X ) ) )
       => ( ( S_22
            = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R5 ) ) ) ) ) ) ) @ R5
              @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) )
                @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 )
                  @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V )
                    @ ^ [X2: L] : ( none @ ( val @ R @ L @ V ) )
                    @ E5 ) ) ) ) )
         => ( ( ( S_2 @ R3 )
              = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rfork @ R @ L @ V @ E5 ) ) ) ) ) )
           => ( ~ ( member @ R @ R5 @ ( rID_G @ R @ L @ V @ S_2 ) )
             => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22
                  @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )
                    @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R5 ) ) ) ) ) ) ) @ R5
                      @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) )
                        @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 )
                          @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V )
                            @ ^ [X2: L] : ( none @ ( val @ R @ L @ V ) )
                            @ E5 ) ) ) )
                    @ R2
                    @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X ) ) )
               => ( ( R2 != R3 )
                 => ( ( R2 != R5 )
                   => ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
                        ( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
                        & ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
                          | ( S_2 = S_3 ) )
                        & ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
                          | ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ) ).

% substitution.local_and_fork_commute
thf(fact_98_local__steps__commute,axiom,
    ! [S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,X: product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ),S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,Y: product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) )] :
      ( ( S_2
        = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X ) ) )
     => ( ( S_22
          = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Y ) ) )
       => ( ( revision_step @ r @ l @ v @ subst @ R3 @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X ) ) @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Y ) ) )
         => ( ( revision_step @ r @ l @ v @ subst @ R2 @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Y ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Y ) ) @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X ) ) )
           => ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
                ( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
                & ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
                  | ( S_2 = S_3 ) )
                & ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
                  | ( S_22 = S_32 ) ) ) ) ) ) ) ).

% local_steps_commute
thf(fact_99_transition__relations__equivalent,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( reachable @ r @ l @ v @ subst @ S )
     => ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
        = ( revisi1433015572elaxed @ r @ l @ v @ subst @ R2 @ S @ S2 ) ) ) ).

% transition_relations_equivalent
thf(fact_100_local__determinism,axiom,
    ! [R2: r,S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_1 @ S_2 )
     => ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_1 @ S_22 )
       => ( eq_states @ r @ l @ v @ S_2 @ S_22 ) ) ) ).

% local_determinism
thf(fact_101_SLC__sym,axiom,
    ! [R3: r,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ? [S_33: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_34: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
          ( ( eq_states @ r @ l @ v @ S_33 @ S_34 )
          & ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_33 )
            | ( S_2 = S_33 ) )
          & ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_34 )
            | ( S_22 = S_34 ) ) )
     => ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
          ( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
          & ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_3 )
            | ( S_22 = S_3 ) )
          & ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_32 )
            | ( S_2 = S_32 ) ) ) ) ).

% SLC_sym
thf(fact_102_SLC__commute,axiom,
    ! [S_35: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_36: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( S_35 = S_36 )
     => ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_35 )
       => ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_36 )
         => ( ( eq_states @ r @ l @ v @ S_35 @ S_36 )
            & ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_35 )
              | ( S_2 = S_35 ) )
            & ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_36 )
              | ( S_22 = S_36 ) ) ) ) ) ) ).

% SLC_commute
thf(fact_103_reachability__closed__under__execution__step,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( reachable @ r @ l @ v @ subst @ S )
     => ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
       => ( reachable @ r @ l @ v @ subst @ S2 ) ) ) ).

% reachability_closed_under_execution_step
thf(fact_104_expr_Oinject_I8_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X8: expr @ R @ L @ V,Y8: expr @ R @ L @ V] :
      ( ( ( rjoin @ R @ L @ V @ X8 )
        = ( rjoin @ R @ L @ V @ Y8 ) )
      = ( X8 = Y8 ) ) ).

% expr.inject(8)
thf(fact_105_SLC__join_092_060_094sub_062_092_060epsilon_062,axiom,
    ! [S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,R5: r,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( ( S_1 @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R5 ) ) ) ) ) ) ) )
     => ( ( S_2
          = ( ^ [X2: r] : ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) )
       => ( ( ( S_1 @ R5 )
            = ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) )
         => ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
           => ( ( R2 != R3 )
             => ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
                  ( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
                  & ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
                    | ( S_2 = S_3 ) )
                  & ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
                    | ( S_22 = S_32 ) ) ) ) ) ) ) ) ).

% SLC_join\<^sub>\<epsilon>
thf(fact_106_reachable__def,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( reachable @ r @ l @ v @ subst @ S )
      = ( ? [E7: expr @ r @ l @ v,S3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] : ( execution @ r @ l @ v @ subst @ E7 @ S3 @ S ) ) ) ).

% reachable_def
thf(fact_107_rjoin_092_060_094sub_062_092_060epsilon_062__deterministic,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,R3: r,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
     => ( ( ( S @ R3 )
          = ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) )
       => ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
          = ( S2
            = ( ^ [X2: r] : ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ) ) ).

% rjoin\<^sub>\<epsilon>_deterministic
thf(fact_108__092_060alpha_062_092_060beta_062__sym,axiom,
    ! [C: $tType,B: $tType,A: $tType,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),S2: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) )] :
      ( ( eq_states @ A @ B @ C @ S @ S2 )
     => ( eq_states @ A @ B @ C @ S2 @ S ) ) ).

% \<alpha>\<beta>_sym
thf(fact_109__092_060alpha_062_092_060beta_062__refl,axiom,
    ! [C: $tType,B: $tType,A: $tType,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) )] : ( eq_states @ A @ B @ C @ S @ S ) ).

% \<alpha>\<beta>_refl
thf(fact_110__092_060alpha_062_092_060beta_062__trans,axiom,
    ! [C: $tType,B: $tType,A: $tType,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),S2: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),S4: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) )] :
      ( ( eq_states @ A @ B @ C @ S @ S2 )
     => ( ( eq_states @ A @ B @ C @ S2 @ S4 )
       => ( eq_states @ A @ B @ C @ S @ S4 ) ) ) ).

% \<alpha>\<beta>_trans
thf(fact_111_expr_Odistinct_I13_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X1: val @ R @ L @ V,X8: expr @ R @ L @ V] :
      ( ( ve @ R @ L @ V @ X1 )
     != ( rjoin @ R @ L @ V @ X8 ) ) ).

% expr.distinct(13)
thf(fact_112_expr_Odistinct_I55_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X7: expr @ R @ L @ V,X8: expr @ R @ L @ V] :
      ( ( rfork @ R @ L @ V @ X7 )
     != ( rjoin @ R @ L @ V @ X8 ) ) ).

% expr.distinct(55)
thf(fact_113_substitution_Olocal__determinism,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_1 @ S_2 )
       => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_1 @ S_22 )
         => ( eq_states @ R @ L @ V @ S_2 @ S_22 ) ) ) ) ).

% substitution.local_determinism
thf(fact_114_substitution_OSLC__commute,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_35: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_36: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( S_35 = S_36 )
       => ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_35 )
         => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_36 )
           => ( ( eq_states @ R @ L @ V @ S_35 @ S_36 )
              & ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_35 )
                | ( S_2 = S_35 ) )
              & ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_36 )
                | ( S_22 = S_36 ) ) ) ) ) ) ) ).

% substitution.SLC_commute
thf(fact_115_substitution_OSLC__sym,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R3: R,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ? [S_33: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_34: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
            ( ( eq_states @ R @ L @ V @ S_33 @ S_34 )
            & ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_33 )
              | ( S_2 = S_33 ) )
            & ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_34 )
              | ( S_22 = S_34 ) ) )
       => ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
            ( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
            & ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_3 )
              | ( S_22 = S_3 ) )
            & ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_32 )
              | ( S_2 = S_32 ) ) ) ) ) ).

% substitution.SLC_sym
thf(fact_116_substitution_OSLC__join_092_060_094sub_062_092_060epsilon_062,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,R5: R,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S_1 @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R5 ) ) ) ) ) ) ) )
       => ( ( S_2
            = ( ^ [X2: R] : ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) )
         => ( ( ( S_1 @ R5 )
              = ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) )
           => ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_1 @ S_22 )
             => ( ( R2 != R3 )
               => ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
                    ( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
                    & ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
                      | ( S_2 = S_3 ) )
                    & ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
                      | ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ).

% substitution.SLC_join\<^sub>\<epsilon>
thf(fact_117_substitution_Olocal__steps__commute,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,X: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ),S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,Y: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( S_2
          = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X ) ) )
       => ( ( S_22
            = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Y ) ) )
         => ( ( revision_step @ R @ L @ V @ Subst @ R3 @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X ) ) @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Y ) ) )
           => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Y ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Y ) ) @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X ) ) )
             => ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
                  ( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
                  & ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
                    | ( S_2 = S_3 ) )
                  & ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
                    | ( S_22 = S_32 ) ) ) ) ) ) ) ) ).

% substitution.local_steps_commute
thf(fact_118_substitution_Orjoin_092_060_094sub_062_092_060epsilon_062__deterministic,axiom,
    ! [L: $tType,V: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,R3: R,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
       => ( ( ( S @ R3 )
            = ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) )
         => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
            = ( S2
              = ( ^ [X2: R] : ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ) ) ).

% substitution.rjoin\<^sub>\<epsilon>_deterministic
thf(fact_119_substitution_Orevision__step_Ojoin_092_060_094sub_062_092_060epsilon_062,axiom,
    ! [L: $tType,V: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,R3: R] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
       => ( ( ( S @ R3 )
            = ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) )
         => ( revision_step @ R @ L @ V @ Subst @ R2 @ S
            @ ^ [X2: R] : ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ).

% substitution.revision_step.join\<^sub>\<epsilon>
thf(fact_120_substitution_Orevision__step__relaxed_Ojoin_092_060_094sub_062_092_060epsilon_062,axiom,
    ! [L: $tType,V: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,R3: R] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
       => ( ( ( S @ R3 )
            = ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) )
         => ( revisi1433015572elaxed @ R @ L @ V @ Subst @ R2 @ S
            @ ^ [X2: R] : ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ).

% substitution.revision_step_relaxed.join\<^sub>\<epsilon>
thf(fact_121_inductive__invariant__is__execution__invariant,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),P: ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) > $o] :
      ( ( reachable @ r @ l @ v @ subst @ S )
     => ( ( inductive_invariant @ r @ l @ v @ subst @ P )
       => ( P @ S ) ) ) ).

% inductive_invariant_is_execution_invariant
thf(fact_122_reachable__imp___092_060S_062_092_060_094sub_062G,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( reachable @ r @ l @ v @ subst @ S )
     => ( domain398919503obally @ r @ l @ v @ S ) ) ).

% reachable_imp_\<S>\<^sub>G
thf(fact_123_substitution_Otransition__relations__equivalent,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( reachable @ R @ L @ V @ Subst @ S )
       => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
          = ( revisi1433015572elaxed @ R @ L @ V @ Subst @ R2 @ S @ S2 ) ) ) ) ).

% substitution.transition_relations_equivalent
thf(fact_124_SLC__fork,axiom,
    ! [S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,E5: expr @ r @ l @ v,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),Left_forkee: r,R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( ( S_1 @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rfork @ r @ l @ v @ E5 ) ) ) ) ) )
     => ( ( S_2
          = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ Left_forkee ) ) ) ) ) ) ) @ Left_forkee
            @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
              @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 )
                @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
                  @ ^ [X2: l] : ( none @ ( val @ r @ l @ v ) )
                  @ E5 ) ) ) ) )
       => ( ~ ( member @ r @ Left_forkee @ ( rID_G @ r @ l @ v @ S_1 ) )
         => ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
           => ( ( R2 != R3 )
             => ( ( reachable @ r @ l @ v @ subst @ S_1 )
               => ( ~ ( finite_finite2 @ r @ ( top_top @ ( set @ r ) ) )
                 => ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
                      ( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
                      & ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
                        | ( S_2 = S_3 ) )
                      & ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
                        | ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ).

% SLC_fork
thf(fact_125_join__and__local__commute,axiom,
    ! [S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),Tau3: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,R5: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,Ls: product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ),Sigma3: l > ( option @ ( val @ r @ l @ v ) ),V2: val @ r @ l @ v] :
      ( ( S_2
        = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) )
     => ( ( S_22
          = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Ls ) ) )
       => ( ( R2 != R3 )
         => ( ( R3 != R5 )
           => ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Ls ) ) )
             => ( ( ( S_22 @ R2 )
                  = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R5 ) ) ) ) ) ) ) )
               => ( ( ( S_22 @ R5 )
                    = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma3 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau3 @ ( ve @ r @ l @ v @ V2 ) ) ) ) )
                 => ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
                      ( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
                      & ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
                        | ( S_2 = S_3 ) )
                      & ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
                        | ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ).

% join_and_local_commute
thf(fact_126_empty__map__finite_I3_J,axiom,
    ! [H: $tType,I: $tType,G2: $tType] :
      ( finite_finite2 @ G2
      @ ( rID_G @ G2 @ H @ I
        @ ^ [X2: G2] : ( none @ ( product_prod @ ( H > ( option @ ( val @ G2 @ H @ I ) ) ) @ ( product_prod @ ( H > ( option @ ( val @ G2 @ H @ I ) ) ) @ ( expr @ G2 @ H @ I ) ) ) ) ) ) ).

% empty_map_finite(3)
thf(fact_127_val_Oinject_I1_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X1: const,Y1: const] :
      ( ( ( cv @ R @ L @ V @ X1 )
        = ( cv @ R @ L @ V @ Y1 ) )
      = ( X1 = Y1 ) ) ).

% val.inject(1)
thf(fact_128_RID_092_060_094sub_062G__finite__invariant,axiom,
    ! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
     => ( ( finite_finite2 @ r @ ( rID_G @ r @ l @ v @ S ) )
       => ( finite_finite2 @ r @ ( rID_G @ r @ l @ v @ S2 ) ) ) ) ).

% RID\<^sub>G_finite_invariant
thf(fact_129_reachable__imp__identifiers__finite_I1_J,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( reachable @ r @ l @ v @ subst @ S )
     => ( finite_finite2 @ r @ ( rID_G @ r @ l @ v @ S ) ) ) ).

% reachable_imp_identifiers_finite(1)
thf(fact_130_reachable__imp__identifiers__available_I1_J,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( reachable @ r @ l @ v @ subst @ S )
     => ( ~ ( finite_finite2 @ r @ ( top_top @ ( set @ r ) ) )
       => ? [R6: r] :
            ~ ( member @ r @ R6 @ ( rID_G @ r @ l @ v @ S ) ) ) ) ).

% reachable_imp_identifiers_available(1)
thf(fact_131_finite__option__UNIV,axiom,
    ! [A: $tType] :
      ( ( finite_finite2 @ ( option @ A ) @ ( top_top @ ( set @ ( option @ A ) ) ) )
      = ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) ) ) ).

% finite_option_UNIV
thf(fact_132_domains__subsume__globally__def,axiom,
    ( ( domain398919503obally @ r @ l @ v )
    = ( ^ [S5: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
        ! [R7: r,Ls2: product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) )] :
          ( ( ( S5 @ R7 )
            = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Ls2 ) )
         => ( domains_subsume @ l @ r @ v @ Ls2 ) ) ) ) ).

% domains_subsume_globally_def
thf(fact_133_finite__state__imp__restriction__finite_I1_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
      ( ( finite_finite2 @ A @ ( rID_G @ A @ B @ C @ S ) )
     => ( finite_finite2 @ A @ ( rID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) ) ) ).

% finite_state_imp_restriction_finite(1)
thf(fact_134_revision__step_Ojoin,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,R3: r,Sigma3: l > ( option @ ( val @ r @ l @ v ) ),Tau3: l > ( option @ ( val @ r @ l @ v ) ),V2: val @ r @ l @ v] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
     => ( ( ( S @ R3 )
          = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma3 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau3 @ ( ve @ r @ l @ v @ V2 ) ) ) ) )
       => ( revision_step @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ) ).

% revision_step.join
thf(fact_135_revision__step__relaxed_Ojoin,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,R3: r,Sigma3: l > ( option @ ( val @ r @ l @ v ) ),Tau3: l > ( option @ ( val @ r @ l @ v ) ),V2: val @ r @ l @ v] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
     => ( ( ( S @ R3 )
          = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma3 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau3 @ ( ve @ r @ l @ v @ V2 ) ) ) ) )
       => ( revisi1433015572elaxed @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ) ).

% revision_step_relaxed.join
thf(fact_136_SLC__join,axiom,
    ! [S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,R5: r,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),Tau3: l > ( option @ ( val @ r @ l @ v ) ),Sigma3: l > ( option @ ( val @ r @ l @ v ) ),V2: val @ r @ l @ v,R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( ( S_1 @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R5 ) ) ) ) ) ) ) )
     => ( ( S_2
          = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) )
       => ( ( ( S_1 @ R5 )
            = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma3 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau3 @ ( ve @ r @ l @ v @ V2 ) ) ) ) )
         => ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
           => ( ( R2 != R3 )
             => ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
                  ( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
                  & ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
                    | ( S_2 = S_3 ) )
                  & ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
                    | ( S_22 = S_32 ) ) ) ) ) ) ) ) ).

% SLC_join
thf(fact_137_bij___092_060alpha_062,axiom,
    bij_betw @ r @ r @ alpha @ ( top_top @ ( set @ r ) ) @ ( top_top @ ( set @ r ) ) ).

% bij_\<alpha>
thf(fact_138_rjoin__deterministic,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,R3: r,Sigma3: l > ( option @ ( val @ r @ l @ v ) ),Tau3: l > ( option @ ( val @ r @ l @ v ) ),V2: val @ r @ l @ v,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
     => ( ( ( S @ R3 )
          = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma3 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau3 @ ( ve @ r @ l @ v @ V2 ) ) ) ) )
       => ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
          = ( S2
            = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ) ) ).

% rjoin_deterministic
thf(fact_139_substitution_Oexecution_Ocong,axiom,
    ! [V: $tType,L: $tType,R: $tType] :
      ( ( execution @ R @ L @ V )
      = ( execution @ R @ L @ V ) ) ).

% substitution.execution.cong
thf(fact_140_substitution_Oinductive__invariant_Ocong,axiom,
    ! [V: $tType,L: $tType,R: $tType] :
      ( ( inductive_invariant @ R @ L @ V )
      = ( inductive_invariant @ R @ L @ V ) ) ).

% substitution.inductive_invariant.cong
thf(fact_141_val_Odistinct_I5_J,axiom,
    ! [L: $tType,V: $tType,R: $tType,X1: const,X4: R] :
      ( ( cv @ R @ L @ V @ X1 )
     != ( rid @ R @ L @ V @ X4 ) ) ).

% val.distinct(5)
thf(fact_142_substitution_Oreachable__imp__identifiers__available_I1_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( reachable @ R @ L @ V @ Subst @ S )
       => ( ~ ( finite_finite2 @ R @ ( top_top @ ( set @ R ) ) )
         => ? [R6: R] :
              ~ ( member @ R @ R6 @ ( rID_G @ R @ L @ V @ S ) ) ) ) ) ).

% substitution.reachable_imp_identifiers_available(1)
thf(fact_143_substitution_Ostrong__local__confluence,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_1 @ S_2 )
       => ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_1 @ S_22 )
         => ( ( reachable @ R @ L @ V @ Subst @ S_1 )
           => ( ~ ( finite_finite2 @ L @ ( top_top @ ( set @ L ) ) )
             => ( ~ ( finite_finite2 @ R @ ( top_top @ ( set @ R ) ) )
               => ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
                    ( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
                    & ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
                      | ( S_2 = S_3 ) )
                    & ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
                      | ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ).

% substitution.strong_local_confluence
thf(fact_144_substitution_ORID_092_060_094sub_062G__finite__invariant,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
       => ( ( finite_finite2 @ R @ ( rID_G @ R @ L @ V @ S ) )
         => ( finite_finite2 @ R @ ( rID_G @ R @ L @ V @ S2 ) ) ) ) ) ).

% substitution.RID\<^sub>G_finite_invariant
thf(fact_145_substitution_Oreachable__imp__identifiers__finite_I1_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( reachable @ R @ L @ V @ Subst @ S )
       => ( finite_finite2 @ R @ ( rID_G @ R @ L @ V @ S ) ) ) ) ).

% substitution.reachable_imp_identifiers_finite(1)
thf(fact_146_substitution_Oreachable__imp___092_060S_062_092_060_094sub_062G,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( reachable @ R @ L @ V @ Subst @ S )
       => ( domain398919503obally @ R @ L @ V @ S ) ) ) ).

% substitution.reachable_imp_\<S>\<^sub>G
thf(fact_147_substitution_Oinductive__invariant__is__execution__invariant,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),P: ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( reachable @ R @ L @ V @ Subst @ S )
       => ( ( inductive_invariant @ R @ L @ V @ Subst @ P )
         => ( P @ S ) ) ) ) ).

% substitution.inductive_invariant_is_execution_invariant
thf(fact_148_substitution_Oempty__map__finite_I3_J,axiom,
    ! [R: $tType,L: $tType,V: $tType,H: $tType,I: $tType,G2: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( finite_finite2 @ G2
        @ ( rID_G @ G2 @ H @ I
          @ ^ [X2: G2] : ( none @ ( product_prod @ ( H > ( option @ ( val @ G2 @ H @ I ) ) ) @ ( product_prod @ ( H > ( option @ ( val @ G2 @ H @ I ) ) ) @ ( expr @ G2 @ H @ I ) ) ) ) ) ) ) ).

% substitution.empty_map_finite(3)
thf(fact_149_substitution_Oreachable__def,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( reachable @ R @ L @ V @ Subst @ S )
        = ( ? [E7: expr @ R @ L @ V,S3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] : ( execution @ R @ L @ V @ Subst @ E7 @ S3 @ S ) ) ) ) ).

% substitution.reachable_def
thf(fact_150_substitution_Ofinite__state__imp__restriction__finite_I1_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,C: $tType,A: $tType,B: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( finite_finite2 @ A @ ( rID_G @ A @ B @ C @ S ) )
       => ( finite_finite2 @ A @ ( rID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) ) ) ) ).

% substitution.finite_state_imp_restriction_finite(1)
thf(fact_151_substitution_Oreachable_Ocong,axiom,
    ! [V: $tType,L: $tType,R: $tType] :
      ( ( reachable @ R @ L @ V )
      = ( reachable @ R @ L @ V ) ) ).

% substitution.reachable.cong
thf(fact_152_substitution_Orevision__step_Ojoin,axiom,
    ! [V: $tType,R: $tType,L: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,R3: R,Sigma3: L > ( option @ ( val @ R @ L @ V ) ),Tau3: L > ( option @ ( val @ R @ L @ V ) ),V2: val @ R @ L @ V] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
       => ( ( ( S @ R3 )
            = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma3 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau3 @ ( ve @ R @ L @ V @ V2 ) ) ) ) )
         => ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ) ).

% substitution.revision_step.join
thf(fact_153_substitution_Orjoin__deterministic,axiom,
    ! [V: $tType,R: $tType,L: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,R3: R,Sigma3: L > ( option @ ( val @ R @ L @ V ) ),Tau3: L > ( option @ ( val @ R @ L @ V ) ),V2: val @ R @ L @ V,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
       => ( ( ( S @ R3 )
            = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma3 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau3 @ ( ve @ R @ L @ V @ V2 ) ) ) ) )
         => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
            = ( S2
              = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ) ) ).

% substitution.rjoin_deterministic
thf(fact_154_substitution_Orevision__step__relaxed_Ojoin,axiom,
    ! [V: $tType,R: $tType,L: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,R3: R,Sigma3: L > ( option @ ( val @ R @ L @ V ) ),Tau3: L > ( option @ ( val @ R @ L @ V ) ),V2: val @ R @ L @ V] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
       => ( ( ( S @ R3 )
            = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma3 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau3 @ ( ve @ R @ L @ V @ V2 ) ) ) ) )
         => ( revisi1433015572elaxed @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ) ).

% substitution.revision_step_relaxed.join
thf(fact_155_substitution_Ojoin__and__local__commute,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),Tau3: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,R5: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,Ls: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ),Sigma3: L > ( option @ ( val @ R @ L @ V ) ),V2: val @ R @ L @ V] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( S_2
          = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) )
       => ( ( S_22
            = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Ls ) ) )
         => ( ( R2 != R3 )
           => ( ( R3 != R5 )
             => ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Ls ) ) )
               => ( ( ( S_22 @ R2 )
                    = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R5 ) ) ) ) ) ) ) )
                 => ( ( ( S_22 @ R5 )
                      = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma3 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau3 @ ( ve @ R @ L @ V @ V2 ) ) ) ) )
                   => ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
                        ( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
                        & ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
                          | ( S_2 = S_3 ) )
                        & ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
                          | ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ) ).

% substitution.join_and_local_commute
thf(fact_156_substitution_OSLC__join,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,R5: R,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),Tau3: L > ( option @ ( val @ R @ L @ V ) ),Sigma3: L > ( option @ ( val @ R @ L @ V ) ),V2: val @ R @ L @ V,R3: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S_1 @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R5 ) ) ) ) ) ) ) )
       => ( ( S_2
            = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) )
         => ( ( ( S_1 @ R5 )
              = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma3 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau3 @ ( ve @ R @ L @ V @ V2 ) ) ) ) )
           => ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_1 @ S_22 )
             => ( ( R2 != R3 )
               => ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
                    ( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
                    & ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
                      | ( S_2 = S_3 ) )
                    & ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
                      | ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ).

% substitution.SLC_join
thf(fact_157_substitution_OSLC__fork,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,E5: expr @ R @ L @ V,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),Left_forkee: R,R3: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S_1 @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( rfork @ R @ L @ V @ E5 ) ) ) ) ) )
       => ( ( S_2
            = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ Left_forkee ) ) ) ) ) ) ) @ Left_forkee
              @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) )
                @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 )
                  @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V )
                    @ ^ [X2: L] : ( none @ ( val @ R @ L @ V ) )
                    @ E5 ) ) ) ) )
         => ( ~ ( member @ R @ Left_forkee @ ( rID_G @ R @ L @ V @ S_1 ) )
           => ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_1 @ S_22 )
             => ( ( R2 != R3 )
               => ( ( reachable @ R @ L @ V @ Subst @ S_1 )
                 => ( ~ ( finite_finite2 @ R @ ( top_top @ ( set @ R ) ) )
                   => ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
                        ( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
                        & ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
                          | ( S_2 = S_3 ) )
                        & ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
                          | ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ) ).

% substitution.SLC_fork
thf(fact_158_substitution_Oreachability__closed__under__execution__step,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( reachable @ R @ L @ V @ Subst @ S )
       => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
         => ( reachable @ R @ L @ V @ Subst @ S2 ) ) ) ) ).

% substitution.reachability_closed_under_execution_step
thf(fact_159_nice__ind__inv__is__inductive__invariant,axiom,
    ( inductive_invariant @ r @ l @ v @ subst
    @ ^ [S5: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
        ( ( domain398919503obally @ r @ l @ v @ S5 )
        & ( subsum380726323obally @ r @ l @ v @ S5 ) ) ) ).

% nice_ind_inv_is_inductive_invariant
thf(fact_160_step__preserves___092_060S_062_092_060_094sub_062G__and___092_060A_062_092_060_094sub_062G_I2_J,axiom,
    ! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
     => ( ( domain398919503obally @ r @ l @ v @ S )
       => ( ( subsum380726323obally @ r @ l @ v @ S )
         => ( subsum380726323obally @ r @ l @ v @ S2 ) ) ) ) ).

% step_preserves_\<S>\<^sub>G_and_\<A>\<^sub>G(2)
thf(fact_161_step__preserves___092_060S_062_092_060_094sub_062G__and___092_060A_062_092_060_094sub_062G_I1_J,axiom,
    ! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
     => ( ( domain398919503obally @ r @ l @ v @ S )
       => ( ( subsum380726323obally @ r @ l @ v @ S )
         => ( domain398919503obally @ r @ l @ v @ S2 ) ) ) ) ).

% step_preserves_\<S>\<^sub>G_and_\<A>\<^sub>G(1)
thf(fact_162_finite__Collect__not,axiom,
    ! [A: $tType,P: A > $o] :
      ( ( finite_finite2 @ A @ ( collect @ A @ P ) )
     => ( ( finite_finite2 @ A
          @ ( collect @ A
            @ ^ [X2: A] :
                ~ ( P @ X2 ) ) )
        = ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) ) ) ) ).

% finite_Collect_not
thf(fact_163_in__renamed__in__unlabelled__global_I1_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,Alpha2: A > A,Beta2: B > B,R2: A,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) )] :
      ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
     => ( ( bij_betw @ B @ B @ Beta2 @ ( top_top @ ( set @ B ) ) @ ( top_top @ ( set @ B ) ) )
       => ( ( member @ A @ ( Alpha2 @ R2 ) @ ( rID_G @ A @ B @ C @ ( r_G @ A @ B @ C @ Alpha2 @ Beta2 @ S ) ) )
          = ( member @ A @ R2 @ ( rID_G @ A @ B @ C @ S ) ) ) ) ) ).

% in_renamed_in_unlabelled_global(1)
thf(fact_164_finite__code,axiom,
    ! [A: $tType] :
      ( ( finite_finite @ A )
     => ( ( finite_finite2 @ A )
        = ( ^ [A7: set @ A] : $true ) ) ) ).

% finite_code
thf(fact_165_finite__Collect__conjI,axiom,
    ! [A: $tType,P: A > $o,Q: A > $o] :
      ( ( ( finite_finite2 @ A @ ( collect @ A @ P ) )
        | ( finite_finite2 @ A @ ( collect @ A @ Q ) ) )
     => ( finite_finite2 @ A
        @ ( collect @ A
          @ ^ [X2: A] :
              ( ( P @ X2 )
              & ( Q @ X2 ) ) ) ) ) ).

% finite_Collect_conjI
thf(fact_166_finite__Collect__disjI,axiom,
    ! [A: $tType,P: A > $o,Q: A > $o] :
      ( ( finite_finite2 @ A
        @ ( collect @ A
          @ ^ [X2: A] :
              ( ( P @ X2 )
              | ( Q @ X2 ) ) ) )
      = ( ( finite_finite2 @ A @ ( collect @ A @ P ) )
        & ( finite_finite2 @ A @ ( collect @ A @ Q ) ) ) ) ).

% finite_Collect_disjI
thf(fact_167_strong__local__confluence,axiom,
    ! [R2: r,S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_1 @ S_2 )
     => ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
       => ( ( reachable @ r @ l @ v @ subst @ S_1 )
         => ( ~ ( finite_finite2 @ l @ ( top_top @ ( set @ l ) ) )
           => ( ~ ( finite_finite2 @ r @ ( top_top @ ( set @ r ) ) )
             => ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
                  ( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
                  & ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
                    | ( S_2 = S_3 ) )
                  & ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
                    | ( S_22 = S_32 ) ) ) ) ) ) ) ) ).

% strong_local_confluence
thf(fact_168_finite__Plus__UNIV__iff,axiom,
    ! [A: $tType,B: $tType] :
      ( ( finite_finite2 @ ( sum_sum @ A @ B ) @ ( top_top @ ( set @ ( sum_sum @ A @ B ) ) ) )
      = ( ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) )
        & ( finite_finite2 @ B @ ( top_top @ ( set @ B ) ) ) ) ) ).

% finite_Plus_UNIV_iff
thf(fact_169_eq__statesI,axiom,
    ! [C: $tType,B: $tType,A: $tType,Alpha2: A > A,Beta2: B > B,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),S2: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) )] :
      ( ( ( r_G @ A @ B @ C @ Alpha2 @ Beta2 @ S )
        = S2 )
     => ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
       => ( ( bij_betw @ B @ B @ Beta2 @ ( top_top @ ( set @ B ) ) @ ( top_top @ ( set @ B ) ) )
         => ( eq_states @ A @ B @ C @ S @ S2 ) ) ) ) ).

% eq_statesI
thf(fact_170_renaming__distr__global_I2_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,Alpha2: A > A,Beta2: B > B,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
      ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
     => ( ( r_G @ A @ B @ C @ Alpha2 @ Beta2 @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) )
        = ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ ( r_G @ A @ B @ C @ Alpha2 @ Beta2 @ S ) @ ( Alpha2 @ R2 ) @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) ) ).

% renaming_distr_global(2)
thf(fact_171_domains__subsume__globallyI,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ! [R6: r,Sigma: l > ( option @ ( val @ r @ l @ v ) ),Tau: l > ( option @ ( val @ r @ l @ v ) ),E3: expr @ r @ l @ v] :
          ( ( ( S @ R6 )
            = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ E3 ) ) ) )
         => ( domains_subsume @ l @ r @ v @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ E3 ) ) ) )
     => ( domain398919503obally @ r @ l @ v @ S ) ) ).

% domains_subsume_globallyI
thf(fact_172_bij___092_060beta_062,axiom,
    bij_betw @ l @ l @ beta @ ( top_top @ ( set @ l ) ) @ ( top_top @ ( set @ l ) ) ).

% bij_\<beta>
thf(fact_173_bij__betw__finite,axiom,
    ! [A: $tType,B: $tType,F: A > B,A6: set @ A,B6: set @ B] :
      ( ( bij_betw @ A @ B @ F @ A6 @ B6 )
     => ( ( finite_finite2 @ A @ A6 )
        = ( finite_finite2 @ B @ B6 ) ) ) ).

% bij_betw_finite
thf(fact_174_bij__pointE,axiom,
    ! [B: $tType,A: $tType,F: A > B,Y: B] :
      ( ( bij_betw @ A @ B @ F @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ B ) ) )
     => ~ ! [X3: A] :
            ( ( Y
              = ( F @ X3 ) )
           => ~ ! [X9: A] :
                  ( ( Y
                    = ( F @ X9 ) )
                 => ( X9 = X3 ) ) ) ) ).

% bij_pointE
thf(fact_175_bij__betwE,axiom,
    ! [A: $tType,B: $tType,F: A > B,A6: set @ A,B6: set @ B] :
      ( ( bij_betw @ A @ B @ F @ A6 @ B6 )
     => ! [X10: A] :
          ( ( member @ A @ X10 @ A6 )
         => ( member @ B @ ( F @ X10 ) @ B6 ) ) ) ).

% bij_betwE
thf(fact_176_bij__betw__inv,axiom,
    ! [B: $tType,A: $tType,F: A > B,A6: set @ A,B6: set @ B] :
      ( ( bij_betw @ A @ B @ F @ A6 @ B6 )
     => ? [G3: B > A] : ( bij_betw @ B @ A @ G3 @ B6 @ A6 ) ) ).

% bij_betw_inv
thf(fact_177_bij__betw__cong,axiom,
    ! [A: $tType,B: $tType,A6: set @ A,F: A > B,G: A > B,A8: set @ B] :
      ( ! [A4: A] :
          ( ( member @ A @ A4 @ A6 )
         => ( ( F @ A4 )
            = ( G @ A4 ) ) )
     => ( ( bij_betw @ A @ B @ F @ A6 @ A8 )
        = ( bij_betw @ A @ B @ G @ A6 @ A8 ) ) ) ).

% bij_betw_cong
thf(fact_178_bij__betw__apply,axiom,
    ! [A: $tType,B: $tType,F: A > B,A6: set @ A,B6: set @ B,A2: A] :
      ( ( bij_betw @ A @ B @ F @ A6 @ B6 )
     => ( ( member @ A @ A2 @ A6 )
       => ( member @ B @ ( F @ A2 ) @ B6 ) ) ) ).

% bij_betw_apply
thf(fact_179_bij__betw__iff__bijections,axiom,
    ! [B: $tType,A: $tType] :
      ( ( bij_betw @ A @ B )
      = ( ^ [F2: A > B,A7: set @ A,B7: set @ B] :
          ? [G4: B > A] :
            ( ! [X2: A] :
                ( ( member @ A @ X2 @ A7 )
               => ( ( member @ B @ ( F2 @ X2 ) @ B7 )
                  & ( ( G4 @ ( F2 @ X2 ) )
                    = X2 ) ) )
            & ! [X2: B] :
                ( ( member @ B @ X2 @ B7 )
               => ( ( member @ A @ ( G4 @ X2 ) @ A7 )
                  & ( ( F2 @ ( G4 @ X2 ) )
                    = X2 ) ) ) ) ) ) ).

% bij_betw_iff_bijections
thf(fact_180_eq__statesE,axiom,
    ! [A: $tType,C: $tType,B: $tType,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),S2: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) )] :
      ( ( eq_states @ A @ B @ C @ S @ S2 )
     => ~ ! [Alpha: A > A,Beta: B > B] :
            ( ( ( r_G @ A @ B @ C @ Alpha @ Beta @ S )
              = S2 )
           => ( ( bij_betw @ A @ A @ Alpha @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
             => ~ ( bij_betw @ B @ B @ Beta @ ( top_top @ ( set @ B ) ) @ ( top_top @ ( set @ B ) ) ) ) ) ) ).

% eq_statesE
thf(fact_181_eq__states__def,axiom,
    ! [V: $tType,L: $tType,R: $tType] :
      ( ( eq_states @ R @ L @ V )
      = ( ^ [S5: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
          ? [Alpha3: R > R,Beta3: L > L] :
            ( ( bij_betw @ R @ R @ Alpha3 @ ( top_top @ ( set @ R ) ) @ ( top_top @ ( set @ R ) ) )
            & ( bij_betw @ L @ L @ Beta3 @ ( top_top @ ( set @ L ) ) @ ( top_top @ ( set @ L ) ) )
            & ( ( r_G @ R @ L @ V @ Alpha3 @ Beta3 @ S5 )
              = S3 ) ) ) ) ).

% eq_states_def
thf(fact_182_finite,axiom,
    ! [A: $tType] :
      ( ( finite_finite @ A )
     => ! [A6: set @ A] : ( finite_finite2 @ A @ A6 ) ) ).

% finite
thf(fact_183_finite__set__choice,axiom,
    ! [B: $tType,A: $tType,A6: set @ A,P: A > B > $o] :
      ( ( finite_finite2 @ A @ A6 )
     => ( ! [X3: A] :
            ( ( member @ A @ X3 @ A6 )
           => ? [X_1: B] : ( P @ X3 @ X_1 ) )
       => ? [F4: A > B] :
          ! [X10: A] :
            ( ( member @ A @ X10 @ A6 )
           => ( P @ X10 @ ( F4 @ X10 ) ) ) ) ) ).

% finite_set_choice
thf(fact_184_substitution_Oin__renamed__in__unlabelled__global_I1_J,axiom,
    ! [R: $tType,L: $tType,V: $tType,C: $tType,B: $tType,A: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),Alpha2: A > A,Beta2: B > B,R2: A,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
       => ( ( bij_betw @ B @ B @ Beta2 @ ( top_top @ ( set @ B ) ) @ ( top_top @ ( set @ B ) ) )
         => ( ( member @ A @ ( Alpha2 @ R2 ) @ ( rID_G @ A @ B @ C @ ( r_G @ A @ B @ C @ Alpha2 @ Beta2 @ S ) ) )
            = ( member @ A @ R2 @ ( rID_G @ A @ B @ C @ S ) ) ) ) ) ) ).

% substitution.in_renamed_in_unlabelled_global(1)
thf(fact_185_not__finite__existsD,axiom,
    ! [A: $tType,P: A > $o] :
      ( ~ ( finite_finite2 @ A @ ( collect @ A @ P ) )
     => ? [X_12: A] : ( P @ X_12 ) ) ).

% not_finite_existsD
thf(fact_186_pigeonhole__infinite__rel,axiom,
    ! [B: $tType,A: $tType,A6: set @ A,B6: set @ B,R8: A > B > $o] :
      ( ~ ( finite_finite2 @ A @ A6 )
     => ( ( finite_finite2 @ B @ B6 )
       => ( ! [X3: A] :
              ( ( member @ A @ X3 @ A6 )
             => ? [Xa2: B] :
                  ( ( member @ B @ Xa2 @ B6 )
                  & ( R8 @ X3 @ Xa2 ) ) )
         => ? [X3: B] :
              ( ( member @ B @ X3 @ B6 )
              & ~ ( finite_finite2 @ A
                  @ ( collect @ A
                    @ ^ [A5: A] :
                        ( ( member @ A @ A5 @ A6 )
                        & ( R8 @ A5 @ X3 ) ) ) ) ) ) ) ) ).

% pigeonhole_infinite_rel
thf(fact_187_finite__UNIV,axiom,
    ! [A: $tType] :
      ( ( finite_finite @ A )
     => ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) ) ) ).

% finite_UNIV
thf(fact_188_infinite__UNIV__char__0,axiom,
    ! [A: $tType] :
      ( ( semiring_char_0 @ A )
     => ~ ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) ) ) ).

% infinite_UNIV_char_0
thf(fact_189_finite__fun__UNIVD2,axiom,
    ! [A: $tType,B: $tType] :
      ( ( finite_finite2 @ ( A > B ) @ ( top_top @ ( set @ ( A > B ) ) ) )
     => ( finite_finite2 @ B @ ( top_top @ ( set @ B ) ) ) ) ).

% finite_fun_UNIVD2
thf(fact_190_finite__Prod__UNIV,axiom,
    ! [B: $tType,A: $tType] :
      ( ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) )
     => ( ( finite_finite2 @ B @ ( top_top @ ( set @ B ) ) )
       => ( finite_finite2 @ ( product_prod @ A @ B ) @ ( top_top @ ( set @ ( product_prod @ A @ B ) ) ) ) ) ) ).

% finite_Prod_UNIV
thf(fact_191_ex__new__if__finite,axiom,
    ! [A: $tType,A6: set @ A] :
      ( ~ ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) )
     => ( ( finite_finite2 @ A @ A6 )
       => ? [A4: A] :
            ~ ( member @ A @ A4 @ A6 ) ) ) ).

% ex_new_if_finite
thf(fact_192_finite__prod,axiom,
    ! [A: $tType,B: $tType] :
      ( ( finite_finite2 @ ( product_prod @ A @ B ) @ ( top_top @ ( set @ ( product_prod @ A @ B ) ) ) )
      = ( ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) )
        & ( finite_finite2 @ B @ ( top_top @ ( set @ B ) ) ) ) ) ).

% finite_prod
thf(fact_193_Finite__Set_Ofinite__set,axiom,
    ! [A: $tType] :
      ( ( finite_finite2 @ ( set @ A ) @ ( top_top @ ( set @ ( set @ A ) ) ) )
      = ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) ) ) ).

% Finite_Set.finite_set
thf(fact_194_substitution_Ostep__preserves___092_060S_062_092_060_094sub_062G__and___092_060A_062_092_060_094sub_062G_I1_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
       => ( ( domain398919503obally @ R @ L @ V @ S )
         => ( ( subsum380726323obally @ R @ L @ V @ S )
           => ( domain398919503obally @ R @ L @ V @ S2 ) ) ) ) ) ).

% substitution.step_preserves_\<S>\<^sub>G_and_\<A>\<^sub>G(1)
thf(fact_195_substitution_Ostep__preserves___092_060S_062_092_060_094sub_062G__and___092_060A_062_092_060_094sub_062G_I2_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
       => ( ( domain398919503obally @ R @ L @ V @ S )
         => ( ( subsum380726323obally @ R @ L @ V @ S )
           => ( subsum380726323obally @ R @ L @ V @ S2 ) ) ) ) ) ).

% substitution.step_preserves_\<S>\<^sub>G_and_\<A>\<^sub>G(2)
thf(fact_196_finite__update__induct,axiom,
    ! [B: $tType,A: $tType,F: A > B,C2: B,P: ( A > B ) > $o] :
      ( ( finite_finite2 @ A
        @ ( collect @ A
          @ ^ [A5: A] :
              ( ( F @ A5 )
             != C2 ) ) )
     => ( ( P
          @ ^ [A5: A] : C2 )
       => ( ! [A4: A,B4: B,F4: A > B] :
              ( ( finite_finite2 @ A
                @ ( collect @ A
                  @ ^ [C4: A] :
                      ( ( F4 @ C4 )
                     != C2 ) ) )
             => ( ( ( F4 @ A4 )
                  = C2 )
               => ( ( B4 != C2 )
                 => ( ( P @ F4 )
                   => ( P @ ( fun_upd @ A @ B @ F4 @ A4 @ B4 ) ) ) ) ) )
         => ( P @ F ) ) ) ) ).

% finite_update_induct
thf(fact_197_substitution_Onice__ind__inv__is__inductive__invariant,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( inductive_invariant @ R @ L @ V @ Subst
        @ ^ [S5: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
            ( ( domain398919503obally @ R @ L @ V @ S5 )
            & ( subsum380726323obally @ R @ L @ V @ S5 ) ) ) ) ).

% substitution.nice_ind_inv_is_inductive_invariant
thf(fact_198_substitution_Odomains__subsume__globally__def,axiom,
    ! [L: $tType,V: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( domain398919503obally @ R @ L @ V @ S )
        = ( ! [R7: R,Ls2: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) )] :
              ( ( ( S @ R7 )
                = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Ls2 ) )
             => ( domains_subsume @ L @ R @ V @ Ls2 ) ) ) ) ) ).

% substitution.domains_subsume_globally_def
thf(fact_199_substitution_Odomains__subsume__globallyI,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ! [R6: R,Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E3: expr @ R @ L @ V] :
            ( ( ( S @ R6 )
              = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E3 ) ) ) )
           => ( domains_subsume @ L @ R @ V @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E3 ) ) ) )
       => ( domain398919503obally @ R @ L @ V @ S ) ) ) ).

% substitution.domains_subsume_globallyI
thf(fact_200__092_060R_062_092_060_094sub_062GI,axiom,
    ! [C: $tType,B: $tType,A: $tType,Alpha2: A > A,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),S2: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),Beta2: B > B] :
      ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
     => ( ! [R6: A] :
            ( ( ( S @ R6 )
              = ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) )
           => ( ( S2 @ ( Alpha2 @ R6 ) )
              = ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) )
       => ( ! [R6: A,Sigma: B > ( option @ ( val @ A @ B @ C ) ),Tau: B > ( option @ ( val @ A @ B @ C ) ),E3: expr @ A @ B @ C] :
              ( ( ( S @ R6 )
                = ( some @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) @ ( product_Pair @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) @ Sigma @ ( product_Pair @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) @ Tau @ E3 ) ) ) )
             => ( ( S2 @ ( Alpha2 @ R6 ) )
                = ( some @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) @ ( r_L @ A @ B @ C @ Alpha2 @ Beta2 @ ( product_Pair @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) @ Sigma @ ( product_Pair @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) @ Tau @ E3 ) ) ) ) ) )
         => ( ( r_G @ A @ B @ C @ Alpha2 @ Beta2 @ S )
            = S2 ) ) ) ) ).

% \<R>\<^sub>GI
thf(fact_201_substitution_Osubsumes__accessible__globallyI,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ! [R_1: R,Sigma_1: L > ( option @ ( val @ R @ L @ V ) ),Tau_1: L > ( option @ ( val @ R @ L @ V ) ),E_1: expr @ R @ L @ V,R_2: R,Sigma_2: L > ( option @ ( val @ R @ L @ V ) ),Tau_2: L > ( option @ ( val @ R @ L @ V ) ),E_2: expr @ R @ L @ V] :
            ( ( ( S @ R_1 )
              = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma_1 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau_1 @ E_1 ) ) ) )
           => ( ( ( S @ R_2 )
                = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma_2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau_2 @ E_2 ) ) ) )
             => ( subsumes_accessible @ R @ L @ V @ R_1 @ R_2 @ S ) ) )
       => ( subsum380726323obally @ R @ L @ V @ S ) ) ) ).

% substitution.subsumes_accessible_globallyI
thf(fact_202__092_060R_062_092_060_094sub_062G__implements__renaming,axiom,
    ! [C: $tType,B: $tType,A: $tType,Alpha2: A > A,Beta2: B > B,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) )] :
      ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
     => ( is_global_renaming @ A @ B @ C @ Alpha2 @ Beta2 @ S @ ( r_G @ A @ B @ C @ Alpha2 @ Beta2 @ S ) ) ) ).

% \<R>\<^sub>G_implements_renaming
thf(fact_203_subsumes__accessible__globallyI,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ! [R_1: r,Sigma_1: l > ( option @ ( val @ r @ l @ v ) ),Tau_1: l > ( option @ ( val @ r @ l @ v ) ),E_1: expr @ r @ l @ v,R_2: r,Sigma_2: l > ( option @ ( val @ r @ l @ v ) ),Tau_2: l > ( option @ ( val @ r @ l @ v ) ),E_2: expr @ r @ l @ v] :
          ( ( ( S @ R_1 )
            = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma_1 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau_1 @ E_1 ) ) ) )
         => ( ( ( S @ R_2 )
              = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma_2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau_2 @ E_2 ) ) ) )
           => ( subsumes_accessible @ r @ l @ v @ R_1 @ R_2 @ S ) ) )
     => ( subsum380726323obally @ r @ l @ v @ S ) ) ).

% subsumes_accessible_globallyI
thf(fact_204_renaming__distr__global_I1_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,Alpha2: A > A,Beta2: B > B,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A,Ls: product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) )] :
      ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
     => ( ( r_G @ A @ B @ C @ Alpha2 @ Beta2 @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) @ Ls ) ) )
        = ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ ( r_G @ A @ B @ C @ Alpha2 @ Beta2 @ S ) @ ( Alpha2 @ R2 ) @ ( some @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) @ ( r_L @ A @ B @ C @ Alpha2 @ Beta2 @ Ls ) ) ) ) ) ).

% renaming_distr_global(1)
thf(fact_205_in__renamed__in__unlabelled__local_I2_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,Alpha2: A > A,Beta2: B > B,L3: B,Ls: product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) )] :
      ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
     => ( ( bij_betw @ B @ B @ Beta2 @ ( top_top @ ( set @ B ) ) @ ( top_top @ ( set @ B ) ) )
       => ( ( member @ B @ ( Beta2 @ L3 ) @ ( lID_L @ B @ A @ C @ ( r_L @ A @ B @ C @ Alpha2 @ Beta2 @ Ls ) ) )
          = ( member @ B @ L3 @ ( lID_L @ B @ A @ C @ Ls ) ) ) ) ) ).

% in_renamed_in_unlabelled_local(2)
thf(fact_206_in__renamed__in__unlabelled__local_I1_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,Alpha2: A > A,Beta2: B > B,R2: A,Ls: product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) )] :
      ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
     => ( ( bij_betw @ B @ B @ Beta2 @ ( top_top @ ( set @ B ) ) @ ( top_top @ ( set @ B ) ) )
       => ( ( member @ A @ ( Alpha2 @ R2 ) @ ( rID_L @ B @ A @ C @ ( r_L @ A @ B @ C @ Alpha2 @ Beta2 @ Ls ) ) )
          = ( member @ A @ R2 @ ( rID_L @ B @ A @ C @ Ls ) ) ) ) ) ).

% in_renamed_in_unlabelled_local(1)
thf(fact_207_RID_092_060_094sub_062GI_I2_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R3: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),R2: B] :
      ( ( ( S @ R3 )
        = ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
     => ( ( member @ B @ R2 @ ( rID_L @ A @ B @ C @ Ls ) )
       => ( member @ B @ R2 @ ( rID_G @ B @ A @ C @ S ) ) ) ) ).

% RID\<^sub>GI(2)
thf(fact_208_local__state__of__finite__restricted__global__state__is__finite_I1_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R3: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),R2: B] :
      ( ( ( S @ R3 )
        = ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
     => ( ( finite_finite2 @ B @ ( rID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) )
       => ( ( R2 != R3 )
         => ( finite_finite2 @ B @ ( rID_L @ A @ B @ C @ Ls ) ) ) ) ) ).

% local_state_of_finite_restricted_global_state_is_finite(1)
thf(fact_209_substitution_Oin__renamed__in__unlabelled__local_I1_J,axiom,
    ! [R: $tType,L: $tType,V: $tType,C: $tType,A: $tType,B: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),Alpha2: A > A,Beta2: B > B,R2: A,Ls: product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
       => ( ( bij_betw @ B @ B @ Beta2 @ ( top_top @ ( set @ B ) ) @ ( top_top @ ( set @ B ) ) )
         => ( ( member @ A @ ( Alpha2 @ R2 ) @ ( rID_L @ B @ A @ C @ ( r_L @ A @ B @ C @ Alpha2 @ Beta2 @ Ls ) ) )
            = ( member @ A @ R2 @ ( rID_L @ B @ A @ C @ Ls ) ) ) ) ) ) ).

% substitution.in_renamed_in_unlabelled_local(1)
thf(fact_210_substitution_Oin__renamed__in__unlabelled__local_I2_J,axiom,
    ! [R: $tType,L: $tType,V: $tType,C: $tType,A: $tType,B: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),Alpha2: A > A,Beta2: B > B,L3: B,Ls: product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
       => ( ( bij_betw @ B @ B @ Beta2 @ ( top_top @ ( set @ B ) ) @ ( top_top @ ( set @ B ) ) )
         => ( ( member @ B @ ( Beta2 @ L3 ) @ ( lID_L @ B @ A @ C @ ( r_L @ A @ B @ C @ Alpha2 @ Beta2 @ Ls ) ) )
            = ( member @ B @ L3 @ ( lID_L @ B @ A @ C @ Ls ) ) ) ) ) ) ).

% substitution.in_renamed_in_unlabelled_local(2)
thf(fact_211_substitution_Olocal__state__of__finite__restricted__global__state__is__finite_I1_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,C: $tType,B: $tType,A: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R3: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),R2: B] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R3 )
          = ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
       => ( ( finite_finite2 @ B @ ( rID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) )
         => ( ( R2 != R3 )
           => ( finite_finite2 @ B @ ( rID_L @ A @ B @ C @ Ls ) ) ) ) ) ) ).

% substitution.local_state_of_finite_restricted_global_state_is_finite(1)
thf(fact_212_reachable__imp__identifiers__available_I2_J,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( reachable @ r @ l @ v @ subst @ S )
     => ( ~ ( finite_finite2 @ l @ ( top_top @ ( set @ l ) ) )
       => ? [L2: l] :
            ~ ( member @ l @ L2 @ ( lID_G @ r @ l @ v @ S ) ) ) ) ).

% reachable_imp_identifiers_available(2)
thf(fact_213_only__fork__introduces__rids,axiom,
    ! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
     => ( ! [Sigma: l > ( option @ ( val @ r @ l @ v ) ),Tau: l > ( option @ ( val @ r @ l @ v ) ),E6: cntxt @ r @ l @ v,E3: expr @ r @ l @ v] :
            ( ( S @ R2 )
           != ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ ( plug @ r @ l @ v @ E6 @ ( rfork @ r @ l @ v @ E3 ) ) ) ) ) )
       => ( ord_less_eq @ ( set @ r ) @ ( rID_G @ r @ l @ v @ S2 ) @ ( rID_G @ r @ l @ v @ S ) ) ) ) ).

% only_fork_introduces_rids
thf(fact_214_empty__map__finite_I4_J,axiom,
    ! [J: $tType,M3: $tType,K4: $tType] :
      ( finite_finite2 @ J
      @ ( lID_G @ K4 @ J @ M3
        @ ^ [X2: K4] : ( none @ ( product_prod @ ( J > ( option @ ( val @ K4 @ J @ M3 ) ) ) @ ( product_prod @ ( J > ( option @ ( val @ K4 @ J @ M3 ) ) ) @ ( expr @ K4 @ J @ M3 ) ) ) ) ) ) ).

% empty_map_finite(4)
thf(fact_215_in__renamed__in__unlabelled__global_I2_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,Alpha2: A > A,Beta2: B > B,L3: B,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) )] :
      ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
     => ( ( bij_betw @ B @ B @ Beta2 @ ( top_top @ ( set @ B ) ) @ ( top_top @ ( set @ B ) ) )
       => ( ( member @ B @ ( Beta2 @ L3 ) @ ( lID_G @ A @ B @ C @ ( r_G @ A @ B @ C @ Alpha2 @ Beta2 @ S ) ) )
          = ( member @ B @ L3 @ ( lID_G @ A @ B @ C @ S ) ) ) ) ) ).

% in_renamed_in_unlabelled_global(2)
thf(fact_216_RID_092_060_094sub_062L__finite__invariant,axiom,
    ! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
     => ( ( finite_finite2 @ l @ ( lID_G @ r @ l @ v @ S ) )
       => ( finite_finite2 @ l @ ( lID_G @ r @ l @ v @ S2 ) ) ) ) ).

% RID\<^sub>L_finite_invariant
thf(fact_217_reachable__imp__identifiers__finite_I2_J,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( reachable @ r @ l @ v @ subst @ S )
     => ( finite_finite2 @ l @ ( lID_G @ r @ l @ v @ S ) ) ) ).

% reachable_imp_identifiers_finite(2)
thf(fact_218_in__restricted__global__in__unrestricted__global_I2_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,L3: B,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
      ( ( member @ B @ L3 @ ( lID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) )
     => ( member @ B @ L3 @ ( lID_G @ A @ B @ C @ S ) ) ) ).

% in_restricted_global_in_unrestricted_global(2)
thf(fact_219_LID_092_060_094sub_062GI,axiom,
    ! [C: $tType,A: $tType,B: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R2: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),L3: A] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
     => ( ( member @ A @ L3 @ ( lID_L @ A @ B @ C @ Ls ) )
       => ( member @ A @ L3 @ ( lID_G @ B @ A @ C @ S ) ) ) ) ).

% LID\<^sub>GI
thf(fact_220_finite__Collect__subsets,axiom,
    ! [A: $tType,A6: set @ A] :
      ( ( finite_finite2 @ A @ A6 )
     => ( finite_finite2 @ ( set @ A )
        @ ( collect @ ( set @ A )
          @ ^ [B7: set @ A] : ( ord_less_eq @ ( set @ A ) @ B7 @ A6 ) ) ) ) ).

% finite_Collect_subsets
thf(fact_221_finite__state__imp__restriction__finite_I2_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
      ( ( finite_finite2 @ B @ ( lID_G @ A @ B @ C @ S ) )
     => ( finite_finite2 @ B @ ( lID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) ) ) ).

% finite_state_imp_restriction_finite(2)
thf(fact_222_in__restricted__global__in__updated__global_I2_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,L3: B,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A,Ls: product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) )] :
      ( ( member @ B @ L3 @ ( lID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) )
     => ( member @ B @ L3 @ ( lID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) @ Ls ) ) ) ) ) ).

% in_restricted_global_in_updated_global(2)
thf(fact_223_local__state__of__finite__restricted__global__state__is__finite_I2_J,axiom,
    ! [C: $tType,B: $tType,A: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R3: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),R2: B] :
      ( ( ( S @ R3 )
        = ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
     => ( ( finite_finite2 @ A @ ( lID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) )
       => ( ( R2 != R3 )
         => ( finite_finite2 @ A @ ( lID_L @ A @ B @ C @ Ls ) ) ) ) ) ).

% local_state_of_finite_restricted_global_state_is_finite(2)
thf(fact_224_ID__restricted__global__subset__unrestricted_I1_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R2: B] : ( ord_less_eq @ ( set @ A ) @ ( lID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) @ ( lID_G @ B @ A @ C @ S ) ) ).

% ID_restricted_global_subset_unrestricted(1)
thf(fact_225_finite__has__minimal2,axiom,
    ! [A: $tType] :
      ( ( order @ A )
     => ! [A6: set @ A,A2: A] :
          ( ( finite_finite2 @ A @ A6 )
         => ( ( member @ A @ A2 @ A6 )
           => ? [X3: A] :
                ( ( member @ A @ X3 @ A6 )
                & ( ord_less_eq @ A @ X3 @ A2 )
                & ! [Xa2: A] :
                    ( ( member @ A @ Xa2 @ A6 )
                   => ( ( ord_less_eq @ A @ Xa2 @ X3 )
                     => ( X3 = Xa2 ) ) ) ) ) ) ) ).

% finite_has_minimal2
thf(fact_226_finite__has__maximal2,axiom,
    ! [A: $tType] :
      ( ( order @ A )
     => ! [A6: set @ A,A2: A] :
          ( ( finite_finite2 @ A @ A6 )
         => ( ( member @ A @ A2 @ A6 )
           => ? [X3: A] :
                ( ( member @ A @ X3 @ A6 )
                & ( ord_less_eq @ A @ A2 @ X3 )
                & ! [Xa2: A] :
                    ( ( member @ A @ Xa2 @ A6 )
                   => ( ( ord_less_eq @ A @ X3 @ Xa2 )
                     => ( X3 = Xa2 ) ) ) ) ) ) ) ).

% finite_has_maximal2
thf(fact_227_rev__finite__subset,axiom,
    ! [A: $tType,B6: set @ A,A6: set @ A] :
      ( ( finite_finite2 @ A @ B6 )
     => ( ( ord_less_eq @ ( set @ A ) @ A6 @ B6 )
       => ( finite_finite2 @ A @ A6 ) ) ) ).

% rev_finite_subset
thf(fact_228_infinite__super,axiom,
    ! [A: $tType,S6: set @ A,T3: set @ A] :
      ( ( ord_less_eq @ ( set @ A ) @ S6 @ T3 )
     => ( ~ ( finite_finite2 @ A @ S6 )
       => ~ ( finite_finite2 @ A @ T3 ) ) ) ).

% infinite_super
thf(fact_229_finite__subset,axiom,
    ! [A: $tType,A6: set @ A,B6: set @ A] :
      ( ( ord_less_eq @ ( set @ A ) @ A6 @ B6 )
     => ( ( finite_finite2 @ A @ B6 )
       => ( finite_finite2 @ A @ A6 ) ) ) ).

% finite_subset
thf(fact_230_LID_092_060_094sub_062GE,axiom,
    ! [C: $tType,B: $tType,A: $tType,L3: A,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) )] :
      ( ( member @ A @ L3 @ ( lID_G @ B @ A @ C @ S ) )
     => ~ ! [R6: B,Ls3: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) )] :
            ( ( ( S @ R6 )
              = ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls3 ) )
           => ~ ( member @ A @ L3 @ ( lID_L @ A @ B @ C @ Ls3 ) ) ) ) ).

% LID\<^sub>GE
thf(fact_231_substitution_ORID_092_060_094sub_062L__finite__invariant,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
       => ( ( finite_finite2 @ L @ ( lID_G @ R @ L @ V @ S ) )
         => ( finite_finite2 @ L @ ( lID_G @ R @ L @ V @ S2 ) ) ) ) ) ).

% substitution.RID\<^sub>L_finite_invariant
thf(fact_232_ID__restricted__global__subset__unrestricted_I2_J,axiom,
    ! [C: $tType,A: $tType,B: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R2: B] : ( ord_less_eq @ ( set @ B ) @ ( rID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) @ ( rID_G @ B @ A @ C @ S ) ) ).

% ID_restricted_global_subset_unrestricted(2)
thf(fact_233_substitution_Oreachable__imp__identifiers__finite_I2_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( reachable @ R @ L @ V @ Subst @ S )
       => ( finite_finite2 @ L @ ( lID_G @ R @ L @ V @ S ) ) ) ) ).

% substitution.reachable_imp_identifiers_finite(2)
thf(fact_234_substitution_Oempty__map__finite_I4_J,axiom,
    ! [R: $tType,L: $tType,V: $tType,J: $tType,M3: $tType,K4: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( finite_finite2 @ J
        @ ( lID_G @ K4 @ J @ M3
          @ ^ [X2: K4] : ( none @ ( product_prod @ ( J > ( option @ ( val @ K4 @ J @ M3 ) ) ) @ ( product_prod @ ( J > ( option @ ( val @ K4 @ J @ M3 ) ) ) @ ( expr @ K4 @ J @ M3 ) ) ) ) ) ) ) ).

% substitution.empty_map_finite(4)
thf(fact_235_substitution_Oreachable__imp__identifiers__available_I2_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( reachable @ R @ L @ V @ Subst @ S )
       => ( ~ ( finite_finite2 @ L @ ( top_top @ ( set @ L ) ) )
         => ? [L2: L] :
              ~ ( member @ L @ L2 @ ( lID_G @ R @ L @ V @ S ) ) ) ) ) ).

% substitution.reachable_imp_identifiers_available(2)
thf(fact_236_substitution_Ofinite__state__imp__restriction__finite_I2_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,C: $tType,A: $tType,B: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( finite_finite2 @ B @ ( lID_G @ A @ B @ C @ S ) )
       => ( finite_finite2 @ B @ ( lID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) ) ) ) ).

% substitution.finite_state_imp_restriction_finite(2)
thf(fact_237_substitution_Oin__renamed__in__unlabelled__global_I2_J,axiom,
    ! [R: $tType,L: $tType,V: $tType,C: $tType,B: $tType,A: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),Alpha2: A > A,Beta2: B > B,L3: B,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( bij_betw @ A @ A @ Alpha2 @ ( top_top @ ( set @ A ) ) @ ( top_top @ ( set @ A ) ) )
       => ( ( bij_betw @ B @ B @ Beta2 @ ( top_top @ ( set @ B ) ) @ ( top_top @ ( set @ B ) ) )
         => ( ( member @ B @ ( Beta2 @ L3 ) @ ( lID_G @ A @ B @ C @ ( r_G @ A @ B @ C @ Alpha2 @ Beta2 @ S ) ) )
            = ( member @ B @ L3 @ ( lID_G @ A @ B @ C @ S ) ) ) ) ) ) ).

% substitution.in_renamed_in_unlabelled_global(2)
thf(fact_238_substitution_Olocal__state__of__finite__restricted__global__state__is__finite_I2_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,C: $tType,B: $tType,A: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R3: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),R2: B] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R3 )
          = ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
       => ( ( finite_finite2 @ A @ ( lID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) )
         => ( ( R2 != R3 )
           => ( finite_finite2 @ A @ ( lID_L @ A @ B @ C @ Ls ) ) ) ) ) ) ).

% substitution.local_state_of_finite_restricted_global_state_is_finite(2)
thf(fact_239_substitution_Oonly__fork__introduces__rids,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
       => ( ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E6: cntxt @ R @ L @ V,E3: expr @ R @ L @ V] :
              ( ( S @ R2 )
             != ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ ( plug @ R @ L @ V @ E6 @ ( rfork @ R @ L @ V @ E3 ) ) ) ) ) )
         => ( ord_less_eq @ ( set @ R ) @ ( rID_G @ R @ L @ V @ S2 ) @ ( rID_G @ R @ L @ V @ S ) ) ) ) ) ).

% substitution.only_fork_introduces_rids
thf(fact_240_only__new__introduces__lids_H,axiom,
    ! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),L3: l] :
      ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
     => ( ! [Sigma: l > ( option @ ( val @ r @ l @ v ) ),Tau: l > ( option @ ( val @ r @ l @ v ) ),E6: cntxt @ r @ l @ v,V3: val @ r @ l @ v] :
            ( ( S @ R2 )
           != ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ ( plug @ r @ l @ v @ E6 @ ( ref @ r @ l @ v @ ( ve @ r @ l @ v @ V3 ) ) ) ) ) ) )
       => ( ~ ( member @ l @ L3 @ ( lID_G @ r @ l @ v @ S ) )
         => ~ ( member @ l @ L3 @ ( lID_G @ r @ l @ v @ S2 ) ) ) ) ) ).

% only_new_introduces_lids'
thf(fact_241_SLC__new,axiom,
    ! [S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,V2: val @ r @ l @ v,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),L3: l,R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( ( S_1 @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( ref @ r @ l @ v @ ( ve @ r @ l @ v @ V2 ) ) ) ) ) ) )
     => ( ( S_2
          = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( fun_upd @ l @ ( option @ ( val @ r @ l @ v ) ) @ Tau2 @ L3 @ ( some @ ( val @ r @ l @ v ) @ V2 ) ) @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( loc @ l @ r @ v @ L3 ) ) ) ) ) ) ) )
       => ( ~ ( member @ l @ L3 @ ( lID_G @ r @ l @ v @ S_1 ) )
         => ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
           => ( ( R2 != R3 )
             => ( ( reachable @ r @ l @ v @ subst @ S_1 )
               => ( ~ ( finite_finite2 @ l @ ( top_top @ ( set @ l ) ) )
                 => ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
                      ( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
                      & ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
                        | ( S_2 = S_3 ) )
                      & ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
                        | ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ).

% SLC_new
thf(fact_242_val_Oinject_I3_J,axiom,
    ! [V: $tType,R: $tType,L: $tType,X32: L,Y32: L] :
      ( ( ( loc @ L @ R @ V @ X32 )
        = ( loc @ L @ R @ V @ Y32 ) )
      = ( X32 = Y32 ) ) ).

% val.inject(3)
thf(fact_243_expr_Oinject_I4_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X4: expr @ R @ L @ V,Y4: expr @ R @ L @ V] :
      ( ( ( ref @ R @ L @ V @ X4 )
        = ( ref @ R @ L @ V @ Y4 ) )
      = ( X4 = Y4 ) ) ).

% expr.inject(4)
thf(fact_244_revision__step_Onew,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,V2: val @ r @ l @ v,L3: l] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( ref @ r @ l @ v @ ( ve @ r @ l @ v @ V2 ) ) ) ) ) ) )
     => ( ~ ( member @ l @ L3 @ ( lID_G @ r @ l @ v @ S ) )
       => ( revision_step @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( fun_upd @ l @ ( option @ ( val @ r @ l @ v ) ) @ Tau2 @ L3 @ ( some @ ( val @ r @ l @ v ) @ V2 ) ) @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( loc @ l @ r @ v @ L3 ) ) ) ) ) ) ) ) ) ) ).

% revision_step.new
thf(fact_245_only__new__introduces__lids,axiom,
    ! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
     => ( ! [Sigma: l > ( option @ ( val @ r @ l @ v ) ),Tau: l > ( option @ ( val @ r @ l @ v ) ),E6: cntxt @ r @ l @ v,V3: val @ r @ l @ v] :
            ( ( S @ R2 )
           != ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ ( plug @ r @ l @ v @ E6 @ ( ref @ r @ l @ v @ ( ve @ r @ l @ v @ V3 ) ) ) ) ) ) )
       => ( ord_less_eq @ ( set @ l ) @ ( lID_G @ r @ l @ v @ S2 ) @ ( lID_G @ r @ l @ v @ S ) ) ) ) ).

% only_new_introduces_lids
thf(fact_246_new__pseudodeterministic,axiom,
    ! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,V2: val @ r @ l @ v,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
      ( ( ( S @ R2 )
        = ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E @ ( ref @ r @ l @ v @ ( ve @ r @ l @ v @ V2 ) ) ) ) ) ) )
     => ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
        = ( ? [L4: l] :
              ( ~ ( member @ l @ L4 @ ( lID_G @ r @ l @ v @ S ) )
              & ( S2
                = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( fun_upd @ l @ ( option @ ( val @ r @ l @ v ) ) @ Tau2 @ L4 @ ( some @ ( val @ r @ l @ v ) @ V2 ) ) @ ( plug @ r @ l @ v @ E @ ( ve @ r @ l @ v @ ( loc @ l @ r @ v @ L4 ) ) ) ) ) ) ) ) ) ) ) ) ).

% new_pseudodeterministic
thf(fact_247_expr_Odistinct_I5_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X1: val @ R @ L @ V,X4: expr @ R @ L @ V] :
      ( ( ve @ R @ L @ V @ X1 )
     != ( ref @ R @ L @ V @ X4 ) ) ).

% expr.distinct(5)
thf(fact_248_val_Odistinct_I15_J,axiom,
    ! [L: $tType,V: $tType,R: $tType,X32: L,X4: R] :
      ( ( loc @ L @ R @ V @ X32 )
     != ( rid @ R @ L @ V @ X4 ) ) ).

% val.distinct(15)
thf(fact_249_expr_Odistinct_I43_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X4: expr @ R @ L @ V,X8: expr @ R @ L @ V] :
      ( ( ref @ R @ L @ V @ X4 )
     != ( rjoin @ R @ L @ V @ X8 ) ) ).

% expr.distinct(43)
thf(fact_250_expr_Odistinct_I41_J,axiom,
    ! [V: $tType,L: $tType,R: $tType,X4: expr @ R @ L @ V,X7: expr @ R @ L @ V] :
      ( ( ref @ R @ L @ V @ X4 )
     != ( rfork @ R @ L @ V @ X7 ) ) ).

% expr.distinct(41)
thf(fact_251_val_Odistinct_I3_J,axiom,
    ! [R: $tType,V: $tType,L: $tType,X1: const,X32: L] :
      ( ( cv @ R @ L @ V @ X1 )
     != ( loc @ L @ R @ V @ X32 ) ) ).

% val.distinct(3)
thf(fact_252_substitution_Onew__pseudodeterministic,axiom,
    ! [V: $tType,R: $tType,L: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,V2: val @ R @ L @ V,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( ref @ R @ L @ V @ ( ve @ R @ L @ V @ V2 ) ) ) ) ) ) )
       => ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
          = ( ? [L4: L] :
                ( ~ ( member @ L @ L4 @ ( lID_G @ R @ L @ V @ S ) )
                & ( S2
                  = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( fun_upd @ L @ ( option @ ( val @ R @ L @ V ) ) @ Tau2 @ L4 @ ( some @ ( val @ R @ L @ V ) @ V2 ) ) @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( loc @ L @ R @ V @ L4 ) ) ) ) ) ) ) ) ) ) ) ) ) ).

% substitution.new_pseudodeterministic
thf(fact_253_substitution_Orevision__step_Onew,axiom,
    ! [R: $tType,V: $tType,L: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,V2: val @ R @ L @ V,L3: L] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( ref @ R @ L @ V @ ( ve @ R @ L @ V @ V2 ) ) ) ) ) ) )
       => ( ~ ( member @ L @ L3 @ ( lID_G @ R @ L @ V @ S ) )
         => ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( fun_upd @ L @ ( option @ ( val @ R @ L @ V ) ) @ Tau2 @ L3 @ ( some @ ( val @ R @ L @ V ) @ V2 ) ) @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( loc @ L @ R @ V @ L3 ) ) ) ) ) ) ) ) ) ) ) ).

% substitution.revision_step.new
thf(fact_254_substitution_OSLC__new,axiom,
    ! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,V2: val @ R @ L @ V,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),L3: L,R3: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
      ( ( substitution @ R @ L @ V @ Subst )
     => ( ( ( S_1 @ R2 )
          = ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E @ ( ref @ R @ L @ V @ ( ve @ R @ L @ V @ V2 ) ) ) ) ) ) )
       => ( ( S_2
            = ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( fun_upd @ L @ ( option @ ( val @ R @ L @ V ) ) @ Tau2 @ L3 @ ( some @ ( val @ R @ L @ V ) @ V2 ) ) @ ( plug @ R @ L @ V @ E @ ( ve @ R @ L @ V @ ( loc @ L @ R @ V @ L3 ) ) ) ) ) ) ) )
         => ( ~ ( member @ L @ L3 @ ( lID_G @ R @ L @ V @ S_1 ) )
           => ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_1 @ S_22 )
             => ( ( R2 != R3 )
               => ( ( reachable @ R @ L @ V @ Subst @ S_1 )
                 => ( ~ ( finite_finite2 @ L @ ( top_top @ ( set @ L ) ) )
                   => ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
                        ( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
                        & ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
                          | ( S_2 = S_3 ) )
                        & ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
                          | ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ) ).

% substitution.SLC_new

% Type constructors (9)
thf(tcon_fun___Finite__Set_Ofinite,axiom,
    ! [A9: $tType,A10: $tType] :
      ( ( ( finite_finite @ A9 )
        & ( finite_finite @ A10 ) )
     => ( finite_finite @ ( A9 > A10 ) ) ) ).

thf(tcon_fun___Orderings_Oorder,axiom,
    ! [A9: $tType,A10: $tType] :
      ( ( order @ A10 )
     => ( order @ ( A9 > A10 ) ) ) ).

thf(tcon_Set_Oset___Finite__Set_Ofinite_1,axiom,
    ! [A9: $tType] :
      ( ( finite_finite @ A9 )
     => ( finite_finite @ ( set @ A9 ) ) ) ).

thf(tcon_Set_Oset___Orderings_Oorder_2,axiom,
    ! [A9: $tType] : ( order @ ( set @ A9 ) ) ).

thf(tcon_HOL_Obool___Finite__Set_Ofinite_3,axiom,
    finite_finite @ $o ).

thf(tcon_HOL_Obool___Orderings_Oorder_4,axiom,
    order @ $o ).

thf(tcon_Sum__Type_Osum___Finite__Set_Ofinite_5,axiom,
    ! [A9: $tType,A10: $tType] :
      ( ( ( finite_finite @ A9 )
        & ( finite_finite @ A10 ) )
     => ( finite_finite @ ( sum_sum @ A9 @ A10 ) ) ) ).

thf(tcon_Option_Ooption___Finite__Set_Ofinite_6,axiom,
    ! [A9: $tType] :
      ( ( finite_finite @ A9 )
     => ( finite_finite @ ( option @ A9 ) ) ) ).

thf(tcon_Product__Type_Oprod___Finite__Set_Ofinite_7,axiom,
    ! [A9: $tType,A10: $tType] :
      ( ( ( finite_finite @ A9 )
        & ( finite_finite @ A10 ) )
     => ( finite_finite @ ( product_prod @ A9 @ A10 ) ) ) ).

% Helper facts (3)
thf(help_If_3_1_T,axiom,
    ! [P: $o] :
      ( ( P = $true )
      | ( P = $false ) ) ).

thf(help_If_2_1_T,axiom,
    ! [A: $tType,X: A,Y: A] :
      ( ( if @ A @ $false @ X @ Y )
      = Y ) ).

thf(help_If_1_1_T,axiom,
    ! [A: $tType,X: A,Y: A] :
      ( ( if @ A @ $true @ X @ Y )
      = X ) ).

% Conjectures (1)
thf(conj_0,conjecture,
    ( s
    = ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ s @ r2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ tau @ ( plug @ r @ l @ v @ e @ ( rfork @ r @ l @ v @ e2 ) ) ) ) ) ) ) ).

%------------------------------------------------------------------------------